- New jira_tickets table (migration script included) - CRUD API endpoints for tickets with validation and audit logging - Dashboard section showing all open vendor tickets - JIRA tickets section within CVE vendor cards - Tickets linked to CVE + vendor with status tracking (Open/In Progress/Closed) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
// Migration: Add jira_tickets 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 JIRA tickets migration...');
|
|
|
|
db.serialize(() => {
|
|
// Create jira_tickets table
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS jira_tickets (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
cve_id TEXT NOT NULL,
|
|
vendor TEXT NOT NULL,
|
|
ticket_key TEXT NOT NULL,
|
|
url TEXT,
|
|
summary TEXT,
|
|
status TEXT DEFAULT 'Open' CHECK(status IN ('Open', 'In Progress', 'Closed')),
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (cve_id, vendor) REFERENCES cves(cve_id, vendor) ON DELETE CASCADE
|
|
)
|
|
`, (err) => {
|
|
if (err) console.error('Error creating table:', err);
|
|
else console.log('✓ jira_tickets table created');
|
|
});
|
|
|
|
// Create indexes
|
|
db.run('CREATE INDEX IF NOT EXISTS idx_jira_tickets_cve ON jira_tickets(cve_id, vendor)');
|
|
db.run('CREATE INDEX IF NOT EXISTS idx_jira_tickets_status ON jira_tickets(status)');
|
|
|
|
console.log('✓ Indexes created');
|
|
});
|
|
|
|
db.close(() => {
|
|
console.log('Migration complete!');
|
|
});
|