OregonTrail/src/index.ts

59 lines
2.4 KiB
TypeScript
Raw Normal View History

2024-02-22 06:15:16 +00:00
import dotenv from 'dotenv';
dotenv.config();
2024-02-23 06:18:00 +00:00
import WorkflowOrchestrator from './workflows/WorkflowOrchestrator';
2024-03-02 07:41:11 +00:00
import rDramaSession from './rdrama/session/SessionManager';
import redditSession from './reddit/session/SessionManager';
2024-02-23 06:18:00 +00:00
import { CommentParser } from './rdrama/services/CommentParser';
2024-02-23 07:02:46 +00:00
import { DatabaseInitializer } from './db/initializeDatabase';
2024-02-27 06:39:51 +00:00
import { DatabaseService } from './db/services/Database';
import { DatabaseMaintenanceService } from './db/services/DatabaseMaintenance';
import { CommentProcessor } from './rdrama/services/CommentProcessor';
2024-03-01 06:40:34 +00:00
import { MessageService } from './utils/MessageService';
import { CommentPoster } from './rdrama/services/CommentPoster';
2024-02-23 06:18:00 +00:00
// Import other necessary services or configurations
2024-02-22 06:15:16 +00:00
2024-02-23 06:18:00 +00:00
async function startApplication() {
// Initialize SessionManager or other global configurations
2024-03-02 07:41:11 +00:00
const rDramaSessionManager = rDramaSession.getInstance();
2024-02-23 06:18:00 +00:00
if (!process.env.RDRAMA_API_KEY) {
throw new Error('RDRAMA_API_KEY is undefined. Please set this environment variable.');
}
2024-03-02 07:41:11 +00:00
rDramaSessionManager.setAuthorizationToken(process.env.RDRAMA_API_KEY);
2024-02-23 06:18:00 +00:00
2024-02-23 07:02:46 +00:00
const databaseInitializer = DatabaseInitializer.getInstance();
const db = await databaseInitializer.getDbInstance()
2024-02-23 07:02:46 +00:00
if (!db) {
throw new Error('Failed to initialize the database.');
}
const databaseService = new DatabaseService(db)
const databaseMaintenance = new DatabaseMaintenanceService(databaseService)
console.log('Database Maintenance Start')
await databaseMaintenance.runMaintenanceTasks()
2024-02-23 07:02:46 +00:00
2024-03-02 07:41:11 +00:00
const redditSessionManager = await redditSession.getInstance(databaseService)
const response = await redditSessionManager.axiosInstance.get('/me')
console.log(JSON.stringify(response.data, null, 4))
2024-02-23 06:18:00 +00:00
// Initialize services with any required dependencies
const commentFetcher = new CommentProcessor(databaseService);
2024-02-23 06:18:00 +00:00
const commentParser = new CommentParser();
2024-03-01 06:40:34 +00:00
const commentPoster = new CommentPoster()
const messageService = new MessageService();
2024-02-23 06:18:00 +00:00
// Initialize and start your workflow
2024-02-23 07:02:46 +00:00
const workflowOrchestrator = new WorkflowOrchestrator(
commentFetcher,
2024-03-01 06:40:34 +00:00
commentParser,
commentPoster,
messageService,
2024-02-23 07:02:46 +00:00
);
2024-02-23 06:18:00 +00:00
await workflowOrchestrator.executeWorkflow();
}
startApplication()
.then(() => console.log('Application started successfully.'))
.catch((error) => console.error('Application failed to start:', error));