in middleware/cron/syncTransactionHistory.js [49:105]
function initializeDatabase() {
return new Promise((resolve, reject) => {
logger.info('Initializing transaction history database');
try {
db.serialize(() => {
// Create transactions table
db.run(`
CREATE TABLE IF NOT EXISTS transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
block_id INTEGER NOT NULL,
volume INTEGER NOT NULL,
created_at TEXT NOT NULL
)
`, (err) => {
if (err) {
logger.error('Error creating transactions table:', err);
reject(err);
return;
}
// Create index on block_id
db.run('CREATE INDEX IF NOT EXISTS idx_transactions_block_id ON transactions(block_id)', (err) => {
if (err) {
logger.error('Error creating block_id index:', err);
reject(err);
return;
}
// Create index on created_at for time-based queries
db.run('CREATE INDEX IF NOT EXISTS idx_transactions_created_at ON transactions(created_at)', (err) => {
if (err) {
logger.error('Error creating created_at index:', err);
reject(err);
return;
}
// Verify database is accessible with a simple query
db.get('SELECT count(*) as count FROM transactions', (err, row) => {
if (err) {
logger.error('Error verifying database access:', err);
reject(err);
} else {
logger.info(`Database initialized successfully. Current record count: ${row?.count || 0}`);
resolve();
}
});
});
});
});
});
} catch (err) {
logger.error('Unexpected error during database initialization:', err);
reject(err);
}
});
}