function initializeDatabase()

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);
        }
    });
}