/** * Migration to support Role-Based Last Write Wins (LWW) * Creates a central metadata table to track the last role that modified a record */ const Database = require('better-sqlite3'); const path = require('path'); const dbPath = process.env.DB_PATH || path.join(__dirname, '../../data/school.db'); const db = new Database(dbPath); console.log('Running Sync Metadata Migration...'); try { // Create central metadata tracking table db.prepare(` CREATE TABLE IF NOT EXISTS sync_metadata ( uid TEXT PRIMARY KEY, table_name TEXT NOT NULL, last_modified_by_role TEXT NOT NULL, last_modified_at DATETIME DEFAULT (datetime('now', 'localtime')) ) `).run(); // Create an index for faster lookups during merge operations db.prepare('CREATE INDEX IF NOT EXISTS idx_sync_metadata_lookup ON sync_metadata(uid, table_name)').run(); console.log('✅ Sync metadata table created successfully.'); // Note: Existing records will dynamically populate this table upon their next update // or we assume a base priority for records lacking metadata. } catch (error) { console.error('❌ Migration failed:', error.message); } finally { db.close(); }