44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
|
|
// Migration: Add ivanti_todo_queue table
|
||
|
|
const sqlite3 = require('sqlite3').verbose();
|
||
|
|
const path = require('path');
|
||
|
|
|
||
|
|
const dbPath = path.join(__dirname, '..', 'cve_database.db');
|
||
|
|
const db = new sqlite3.Database(dbPath);
|
||
|
|
|
||
|
|
console.log('Starting ivanti_todo_queue migration...');
|
||
|
|
|
||
|
|
db.serialize(() => {
|
||
|
|
db.run(`
|
||
|
|
CREATE TABLE IF NOT EXISTS ivanti_todo_queue (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
user_id INTEGER NOT NULL,
|
||
|
|
finding_id TEXT NOT NULL,
|
||
|
|
finding_title TEXT,
|
||
|
|
cves_json TEXT,
|
||
|
|
vendor TEXT NOT NULL,
|
||
|
|
workflow_type TEXT NOT NULL CHECK(workflow_type IN ('FP', 'Archer')),
|
||
|
|
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'complete')),
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||
|
|
)
|
||
|
|
`, (err) => {
|
||
|
|
if (err) console.error('Error creating table:', err);
|
||
|
|
else console.log('✓ ivanti_todo_queue table created');
|
||
|
|
});
|
||
|
|
|
||
|
|
db.run(
|
||
|
|
'CREATE INDEX IF NOT EXISTS idx_todo_queue_user ON ivanti_todo_queue(user_id, status)',
|
||
|
|
(err) => {
|
||
|
|
if (err) console.error('Error creating index:', err);
|
||
|
|
else console.log('✓ User+status index created');
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
console.log('✓ Migration statements queued');
|
||
|
|
});
|
||
|
|
|
||
|
|
db.close(() => {
|
||
|
|
console.log('Migration complete!');
|
||
|
|
});
|