mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
db: add incoming_leg_transport_mode to day_assignments
This commit is contained in:
@@ -3772,6 +3772,17 @@ function runMigrations(db: Database.Database): void {
|
||||
if (!err.message?.includes('duplicate column name')) throw err;
|
||||
}
|
||||
},
|
||||
// Per-segment travel mode for boundary legs: a leg whose ORIGIN is not a place
|
||||
// (booking arrival, morning hotel) stores its mode on the DESTINATION stop.
|
||||
// NULL = inherit the day default. INERT whenever the previous timeline element
|
||||
// is itself a place (that place's outgoing leg_transport_mode wins).
|
||||
() => {
|
||||
try {
|
||||
db.exec('ALTER TABLE day_assignments ADD COLUMN incoming_leg_transport_mode TEXT');
|
||||
} catch (err: any) {
|
||||
if (!err.message?.includes('duplicate column name')) throw err;
|
||||
}
|
||||
},
|
||||
// School holidays are a visual Vacay calendar layer. Keep them separate from
|
||||
// public holidays so applyHolidayCalendars never removes vacation entries for
|
||||
// school-break dates. Appended LAST: this branch was cut before #1435/#1281
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Migration test for incoming_leg_transport_mode on day_assignments.
|
||||
*/
|
||||
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
||||
|
||||
const Database = require('better-sqlite3');
|
||||
|
||||
import { createTables } from '../../src/db/schema';
|
||||
import { runMigrations } from '../../src/db/migrations';
|
||||
|
||||
let testDb: any;
|
||||
|
||||
beforeAll(() => {
|
||||
testDb = new Database(':memory:');
|
||||
testDb.exec('PRAGMA journal_mode = WAL');
|
||||
testDb.exec('PRAGMA foreign_keys = ON');
|
||||
createTables(testDb);
|
||||
runMigrations(testDb);
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
testDb.close();
|
||||
});
|
||||
|
||||
describe('incoming_leg_transport_mode migration', () => {
|
||||
it('adds a nullable incoming_leg_transport_mode column to day_assignments', () => {
|
||||
const cols = testDb.prepare(`PRAGMA table_info(day_assignments)`).all() as { name: string }[];
|
||||
expect(cols.map(c => c.name)).toContain('incoming_leg_transport_mode');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user