2025-01-27 20:42:47 -05:00

66 lines
1.6 KiB
JavaScript

const express = require('express');
const { Model } = require('objection');
const Knex = require('knex');
const cron = require('node-cron');
const knexConfig = require('./src/config/database');
const MessageService = require('./src/email_server/services/MessageService');
const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const swaggerOptions = {
definition: {
openapi: '3.1.0',
info: {
title: '2weekmail API',
version: '1.0.0',
description: 'Documentation for the 2weekmail API',
},
security: [
{
bearerAuth: []
}
],
servers: [
{
url: 'https://2weekmail.fyi',
description: 'Production server',
},
],
},
apis: ['./src/routes/*.js'],
};
const swaggerSpec = swaggerJsdoc(swaggerOptions);
// Initialize Knex
const knex = Knex(knexConfig.development);
Model.knex(knex);
const app = express();
app.use(express.json());
// Routes
app.use('/auth', require('./src/routes/auth'));
app.use('/admin', require('./src/routes/admin'));
app.use('/messages', require('./src/routes/messages'));
app.use('/email', require('./src/routes/email'));
app.use('/test', require('./src/routes/test'));
app.use('/', require('./src/routes/index'));
app.use('/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
// Schedule cleanup job
cron.schedule('0 0 * * *', async () => {
try {
await MessageService.cleanup();
console.log('Daily cleanup completed');
} catch (error) {
console.error('Cleanup failed:', error);
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`API server running on port ${PORT}`);
});