Add VISA backend foundation
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname, join } from 'node:path';
|
||||
|
||||
const currentDir = dirname(fileURLToPath(import.meta.url));
|
||||
const migration = readFileSync(join(currentDir, '202606230001_create_visa_schema.sql'), 'utf8');
|
||||
|
||||
const requiredTables = [
|
||||
'models',
|
||||
'model_versions',
|
||||
'visa_agents',
|
||||
'visa_variables',
|
||||
'visa_sensing_relations',
|
||||
'visa_sensing_variables',
|
||||
'visa_internal_functions',
|
||||
'visa_function_inputs',
|
||||
'visa_function_updates',
|
||||
'visa_associated_data',
|
||||
'visa_inputs',
|
||||
'visa_outputs',
|
||||
'visa_schedule_steps',
|
||||
'visa_termination_conditions',
|
||||
'visa_validations',
|
||||
'visa_consistency_check_results',
|
||||
];
|
||||
|
||||
for (const table of requiredTables) {
|
||||
assert.match(migration, new RegExp(`create table if not exists ${table}`, 'i'), `${table} table missing`);
|
||||
}
|
||||
|
||||
const requiredForeignKeys = [
|
||||
'references model_versions',
|
||||
'references visa_agents',
|
||||
'references visa_variables',
|
||||
'references visa_sensing_relations',
|
||||
'references visa_internal_functions',
|
||||
'references visa_associated_data',
|
||||
];
|
||||
|
||||
for (const foreignKey of requiredForeignKeys) {
|
||||
assert.match(migration, new RegExp(foreignKey, 'i'), `${foreignKey} foreign key missing`);
|
||||
}
|
||||
|
||||
const requiredIndexes = [
|
||||
'idx_visa_agents_model_version',
|
||||
'idx_visa_variables_agent',
|
||||
'idx_visa_sensing_observer',
|
||||
'idx_visa_functions_agent',
|
||||
'idx_visa_schedule_model_version',
|
||||
'idx_visa_checks_model_version',
|
||||
];
|
||||
|
||||
for (const indexName of requiredIndexes) {
|
||||
assert.match(migration, new RegExp(`create index if not exists ${indexName}`, 'i'), `${indexName} index missing`);
|
||||
}
|
||||
|
||||
assert.match(migration, /unique \(model_version_id, function_code\)/i);
|
||||
assert.match(migration, /unique \(model_version_id, validation_code\)/i);
|
||||
assert.match(migration, /check \(status in \('draft', 'checked', 'released', 'archived'\)\)/i);
|
||||
|
||||
console.log('visa schema migration tests passed');
|
||||
Reference in New Issue
Block a user