fix(reference): select verified station deterministically
This commit is contained in:
@@ -202,6 +202,7 @@ export function createReferenceSchema(db: Database): void {
|
||||
CREATE INDEX systems_name_idx ON systems(name);
|
||||
CREATE INDEX gates_destination_idx ON gates(destination_system_id);
|
||||
CREATE INDEX stations_system_idx ON stations(system_id);
|
||||
CREATE INDEX stations_source_verified_idx ON stations(source_verified, station_id);
|
||||
`);
|
||||
}
|
||||
|
||||
@@ -209,7 +210,7 @@ export function createReferenceSchema(db: Database): void {
|
||||
export function assertReferenceReaderSchema(db: Database): void {
|
||||
const version = Number((db.query<{ user_version: number }, []>('PRAGMA user_version').get() as { user_version: number } | null)?.user_version ?? 0);
|
||||
const row = db.query<{ present: number }, []>("SELECT COUNT(*) AS present FROM sqlite_master WHERE type='table' AND name IN ('types','type_search','type_search_fts','categories','groups','regions','constellations','systems','stations')").get();
|
||||
const index = db.query<{ present: number }, []>("SELECT COUNT(*) AS present FROM sqlite_master WHERE type='index' AND name='type_search_normalized_name_idx'").get();
|
||||
const indexes = db.query<{ present: number }, []>("SELECT COUNT(*) AS present FROM sqlite_master WHERE type='index' AND name IN ('type_search_normalized_name_idx','stations_source_verified_idx')").get();
|
||||
const requiredColumns: Record<string, string[]> = {
|
||||
types: ['type_id', 'group_id', 'category_id', 'name_json', 'published', 'volume'],
|
||||
type_search: ['type_id', 'language', 'name', 'normalized_name'],
|
||||
@@ -225,7 +226,7 @@ export function assertReferenceReaderSchema(db: Database): void {
|
||||
const present = new Set(db.query<{ name: string }, []>(`PRAGMA table_info(${table})`).all().map((column) => column.name));
|
||||
return columns.every((column) => present.has(column));
|
||||
});
|
||||
if (version !== SCHEMA_VERSION || !row || Number(row.present) !== 9 || !index || Number(index.present) !== 1 || !columnsValid) throw new Error(`active reference database has an incompatible schema version (expected ${SCHEMA_VERSION})`);
|
||||
if (version !== SCHEMA_VERSION || !row || Number(row.present) !== 9 || !indexes || Number(indexes.present) !== 2 || !columnsValid) throw new Error(`active reference database has an incompatible schema version (expected ${SCHEMA_VERSION})`);
|
||||
}
|
||||
|
||||
const bool = (value: boolean | undefined): number | null => value === undefined ? null : value ? 1 : 0;
|
||||
|
||||
Reference in New Issue
Block a user