45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
|
|
const pool = require('../db');
|
||
|
|
|
||
|
|
async function run() {
|
||
|
|
console.log('Starting compliance_item_history migration...');
|
||
|
|
try {
|
||
|
|
await pool.query(`
|
||
|
|
CREATE TABLE IF NOT EXISTS compliance_item_history (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
hostname TEXT NOT NULL,
|
||
|
|
field_name TEXT NOT NULL CHECK (field_name IN ('resolution_date', 'remediation_plan')),
|
||
|
|
old_value TEXT,
|
||
|
|
new_value TEXT,
|
||
|
|
change_reason TEXT,
|
||
|
|
changed_by TEXT NOT NULL,
|
||
|
|
changed_at TIMESTAMPTZ DEFAULT NOW()
|
||
|
|
)
|
||
|
|
`);
|
||
|
|
console.log('✓ compliance_item_history table created (or already exists)');
|
||
|
|
|
||
|
|
await pool.query(`
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_compliance_history_hostname_field
|
||
|
|
ON compliance_item_history(hostname, field_name)
|
||
|
|
`);
|
||
|
|
console.log('✓ hostname/field_name index created');
|
||
|
|
|
||
|
|
await pool.query(`
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_compliance_history_changed_at
|
||
|
|
ON compliance_item_history(changed_at)
|
||
|
|
`);
|
||
|
|
console.log('✓ changed_at index created');
|
||
|
|
|
||
|
|
console.log('Migration complete.');
|
||
|
|
} catch (err) {
|
||
|
|
console.error('Migration failed:', err.message);
|
||
|
|
throw err;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = { run };
|
||
|
|
|
||
|
|
// Self-execute when run directly
|
||
|
|
if (require.main === module) {
|
||
|
|
run().then(() => process.exit(0)).catch(() => process.exit(1));
|
||
|
|
}
|