36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import { loadConfig } from './config/index.js';
|
|
import { createLogger } from './utils/logger.js';
|
|
import { bootstrap } from './bootstrap.js';
|
|
import { runMainLoop } from './main-loop.js';
|
|
import { createDatabase, runMigrations } from './database/client.js';
|
|
import { ConfigStore } from './config/persistence.js';
|
|
|
|
async function main(): Promise<void> {
|
|
const logger = createLogger();
|
|
|
|
logger.info('='.repeat(60));
|
|
logger.info('Reddit Bot Starting');
|
|
logger.info('='.repeat(60));
|
|
|
|
let config;
|
|
const db = createDatabase({
|
|
database: { path: process.env.DATABASE_PATH ?? './data/reddit-bot.db' },
|
|
});
|
|
runMigrations(db);
|
|
try {
|
|
config = loadConfig(new ConfigStore(db));
|
|
logger.info(`Loaded configuration for ${config.reddit.subreddits.length} subreddits`);
|
|
} catch (error) {
|
|
logger.error('Failed to load configuration:', error);
|
|
process.exit(1);
|
|
}
|
|
|
|
const app = await bootstrap(config, logger, db);
|
|
await runMainLoop(app);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error('Fatal error:', error);
|
|
process.exit(1);
|
|
});
|