准考证编排
This commit is contained in:
@@ -95,7 +95,30 @@ export function createMysqlAdapter(context) {
|
||||
if (legacyRegistrationNumberIndexes.length) await pool.execute('ALTER TABLE registrations DROP INDEX uq_registrations_number');
|
||||
const [existing] = await pool.execute('SELECT id FROM schema_metadata WHERE id = 1');
|
||||
if (existing.length) {
|
||||
const [metadataRows] = await pool.execute('SELECT app_version FROM schema_metadata WHERE id = 1');
|
||||
const [metadataRows] = await pool.execute('SELECT app_version, schema_version FROM schema_metadata WHERE id = 1');
|
||||
if (Number(metadataRows[0]?.schema_version || 1) < 9) {
|
||||
await pool.execute('DROP TABLE IF EXISTS admit_card_subjects');
|
||||
await pool.execute('DROP TABLE IF EXISTS admit_cards');
|
||||
await pool.execute('DROP TABLE IF EXISTS exam_arrangement_plans');
|
||||
await pool.execute('DROP TABLE IF EXISTS admission_number_rules');
|
||||
const admissionTables = ['admission_number_rules', 'exam_arrangement_plans', 'admit_cards', 'admit_card_subjects'];
|
||||
for (const table of admissionTables) {
|
||||
const statement = mysqlSchema.find(item => item.includes(`CREATE TABLE IF NOT EXISTS ${table} (`));
|
||||
if (!statement) throw new Error(`缺少 ${table} 的 MySQL 表定义`);
|
||||
await pool.execute(statement);
|
||||
}
|
||||
const extension = seed();
|
||||
for (const rule of extension.admissionNumberRules) await pool.execute(
|
||||
`INSERT INTO admission_number_rules (
|
||||
id, code, name, description, separator, segments_json, example, active, created_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
[rule.id, rule.code, rule.name, rule.description, rule.separator || '', JSON.stringify(rule.segments || []),
|
||||
rule.example || '', rule.active === false ? 0 : 1, rule.createdAt]
|
||||
);
|
||||
await pool.execute('UPDATE schema_metadata SET schema_version = 9, app_version = 9 WHERE id = 1');
|
||||
metadataRows[0].schema_version = 9;
|
||||
metadataRows[0].app_version = 9;
|
||||
}
|
||||
if (Number(metadataRows[0]?.app_version || 1) < 2) {
|
||||
const extension = seed();
|
||||
const connection = await pool.getConnection();
|
||||
@@ -275,7 +298,7 @@ export function createMysqlAdapter(context) {
|
||||
await connection.beginTransaction();
|
||||
const [insert] = await connection.execute(`
|
||||
INSERT IGNORE INTO schema_metadata (id, schema_version, app_version, self_registration_enabled, created_at)
|
||||
VALUES (1, 7, ?, ?, ?)
|
||||
VALUES (1, 9, ?, ?, ?)
|
||||
`, [Number(initialState.meta?.version || 1), initialState.settings?.selfRegistrationEnabled ? 1 : 0, initialState.meta?.createdAt || new Date().toISOString()]);
|
||||
if (insert.affectedRows === 1) {
|
||||
for (const item of buildSeedOperations(initialState)) await connection.execute(item.sql, item.params);
|
||||
|
||||
Reference in New Issue
Block a user