57 lines
2.3 KiB
JavaScript
57 lines
2.3 KiB
JavaScript
const db = require('./backend/db-sqlite');
|
|
async function fix() {
|
|
const fixes = [
|
|
// return_records - applicant column
|
|
"ALTER TABLE return_records ADD COLUMN applicant TEXT DEFAULT ''",
|
|
"ALTER TABLE return_records ADD COLUMN department TEXT DEFAULT ''",
|
|
"ALTER TABLE return_records ADD COLUMN approver TEXT DEFAULT ''",
|
|
"ALTER TABLE return_records ADD COLUMN status TEXT DEFAULT 'pending'",
|
|
|
|
// payment_requests table (needed by payment_plans)
|
|
`CREATE TABLE IF NOT EXISTS payment_requests (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
code TEXT DEFAULT '',
|
|
payment_type TEXT DEFAULT '',
|
|
purchase_order_id INTEGER DEFAULT 0,
|
|
amount REAL DEFAULT 0,
|
|
currency TEXT DEFAULT 'CNY',
|
|
applicant TEXT DEFAULT '',
|
|
request_date TEXT DEFAULT '',
|
|
status TEXT DEFAULT 'pending',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`,
|
|
|
|
// payment_plans - add missing columns used by route
|
|
"ALTER TABLE payment_plans ADD COLUMN stage TEXT DEFAULT ''",
|
|
"ALTER TABLE payment_plans ADD COLUMN planned_date TEXT DEFAULT ''",
|
|
"ALTER TABLE payment_plans ADD COLUMN planned_amount REAL DEFAULT 0",
|
|
"ALTER TABLE payment_plans ADD COLUMN planned_percentage REAL DEFAULT 0",
|
|
"ALTER TABLE payment_plans ADD COLUMN actual_amount REAL DEFAULT 0",
|
|
"ALTER TABLE payment_plans ADD COLUMN actual_date TEXT DEFAULT ''",
|
|
"ALTER TABLE payment_plans ADD COLUMN payment_request_id INTEGER",
|
|
"ALTER TABLE payment_plans ADD COLUMN currency TEXT DEFAULT 'CNY'",
|
|
"ALTER TABLE payment_plans ADD COLUMN updated_at DATETIME DEFAULT CURRENT_TIMESTAMP",
|
|
|
|
// projects - add more
|
|
"ALTER TABLE projects ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP",
|
|
"ALTER TABLE projects ADD COLUMN updated_at DATETIME DEFAULT CURRENT_TIMESTAMP",
|
|
];
|
|
|
|
for (const sql of fixes) {
|
|
try {
|
|
await db.query(sql);
|
|
console.log('OK:', sql.substring(0, 70));
|
|
} catch(e) {
|
|
const msg = e.message || '';
|
|
if (msg.includes('duplicate') || msg.includes('already exists')) {
|
|
console.log('SKIP:', sql.substring(0, 70));
|
|
} else {
|
|
console.log('ERR:', msg.substring(0, 100));
|
|
}
|
|
}
|
|
}
|
|
console.log('\nDone!');
|
|
process.exit();
|
|
}
|
|
fix(); |