This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
const express = require('express');
|
||||
const dbOps = require('./database');
|
||||
const { closeBrowser } = require('./browser');
|
||||
const routes = require('./routes');
|
||||
const config = require('./config');
|
||||
|
||||
const app = express();
|
||||
|
||||
// Use routes
|
||||
app.use('/', routes);
|
||||
|
||||
// Cleanup expired cache entries
|
||||
async function cleanupExpiredCache() {
|
||||
const now = Date.now();
|
||||
const deleted = await dbOps.deleteExpired(now);
|
||||
if (deleted > 0) {
|
||||
console.log(`Cleaned up ${deleted} expired cache entries`);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize database and start server
|
||||
(async () => {
|
||||
try {
|
||||
await dbOps.init();
|
||||
console.log(`Database initialized: ${dbOps.getDbType()}`);
|
||||
|
||||
// Periodic cache cleanup (every hour)
|
||||
setInterval(cleanupExpiredCache, 60 * 60 * 1000);
|
||||
|
||||
// Initial cleanup on startup
|
||||
await cleanupExpiredCache();
|
||||
|
||||
// Start server
|
||||
app.listen(config.PORT, '0.0.0.0', () => {
|
||||
console.log(`Playwright API server listening on port ${config.PORT}`);
|
||||
console.log(`Cache expiry: ${config.CACHE_EXPIRY_HOURS} hours`);
|
||||
console.log(`Database: ${dbOps.getDbType()}${dbOps.getDbType() === 'postgres' ? ` (${config.POSTGRES_HOST}:${config.POSTGRES_PORT}/${config.POSTGRES_DB})` : ` (${config.DB_PATH})`}`);
|
||||
console.log(`API Key authentication: ${config.API_KEY ? 'enabled' : 'disabled'}`);
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Failed to initialize:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
|
||||
// Graceful shutdown
|
||||
process.on('SIGTERM', async () => {
|
||||
console.log('SIGTERM received, shutting down gracefully...');
|
||||
await closeBrowser();
|
||||
await dbOps.close();
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
process.on('SIGINT', async () => {
|
||||
console.log('SIGINT received, shutting down gracefully...');
|
||||
await closeBrowser();
|
||||
await dbOps.close();
|
||||
process.exit(0);
|
||||
});
|
||||
Reference in New Issue
Block a user