feat(M01-C): 建立MySQL异步任务基础
This commit is contained in:
@@ -12,6 +12,9 @@ const downSql = read('database/migrations/2026061601_m01b_core_schema.down.sql')
|
||||
const verifySql = read('database/migrations/2026061601_m01b_core_schema.verify.sql');
|
||||
const seedSql = read('database/seeds/2026061601_m01b_minimal_seed.sql');
|
||||
const legacyFixtureSql = read('database/fixtures/2026061801_m01b_legacy_schema.sql');
|
||||
const asyncUpSql = read('database/migrations/2026061802_m01c_async_tasks.up.sql');
|
||||
const asyncDownSql = read('database/migrations/2026061802_m01c_async_tasks.down.sql');
|
||||
const asyncVerifySql = read('database/migrations/2026061802_m01c_async_tasks.verify.sql');
|
||||
|
||||
const coreTables = [
|
||||
'qipai_schema_migrations',
|
||||
@@ -73,4 +76,14 @@ assert.match(legacyFixtureSql, /DECIMAL\(10,\s*2\)/);
|
||||
assert.match(legacyFixtureSql, /LEGACY-SANITIZED-001/);
|
||||
assert.doesNotMatch(legacyFixtureSql, /(?:https?:\/\/|@|password|secret|token)/i);
|
||||
|
||||
console.log('PASS: M01-B migration contract is present.');
|
||||
for (const table of ['qipai_outbox_events', 'qipai_async_tasks']) {
|
||||
assert.match(asyncUpSql, new RegExp(`CREATE TABLE IF NOT EXISTS ${table}\\b`));
|
||||
assert.match(asyncDownSql, new RegExp(`DROP TABLE IF EXISTS ${table}\\b`));
|
||||
assert.match(asyncVerifySql, new RegExp(`'${table}'`));
|
||||
}
|
||||
assert.match(asyncUpSql, /UNIQUE KEY uq_qipai_outbox_events_idempotency/);
|
||||
assert.match(asyncUpSql, /UNIQUE KEY uq_qipai_async_tasks_idempotency/);
|
||||
assert.match(asyncUpSql, /lease_expires_at DATETIME\(3\)/);
|
||||
assert.match(asyncUpSql, /COMPENSATION_REQUIRED|status VARCHAR/);
|
||||
|
||||
console.log('PASS: M01-B/M01-C migration contracts are present.');
|
||||
|
||||
Reference in New Issue
Block a user