dragonflight/services/mam-api/src/index.js

70 lines
1.8 KiB
JavaScript
Raw Normal View History

2026-04-07 21:58:25 -04:00
import 'dotenv/config';
import express from 'express';
import cors from 'cors';
import session from 'express-session';
import ConnectPgSimple from 'connect-pg-simple';
import pool from './db/pool.js';
import { errorHandler } from './middleware/errors.js';
// Import routes
import assetsRouter from './routes/assets.js';
import projectsRouter from './routes/projects.js';
import binsRouter from './routes/bins.js';
import jobsRouter from './routes/jobs.js';
import captureRouter from './routes/capture.js';
2026-04-07 22:05:39 -04:00
import uploadRouter from './routes/upload.js';
import recordersRouter from './routes/recorders.js';
import settingsRouter from './routes/settings.js';
import amppRouter from './routes/ampp.js';
2026-04-07 21:58:25 -04:00
const app = express();
const PORT = process.env.PORT || 3000;
// Middleware
app.use(cors());
2026-04-07 22:05:39 -04:00
app.use(express.json({ limit: '50mb' }));
2026-04-07 21:58:25 -04:00
// Session store
const PgSession = ConnectPgSimple(session);
app.use(
session({
store: new PgSession({
pool,
tableName: 'sessions',
}),
secret: process.env.SESSION_SECRET || 'your-secret-key',
resave: false,
saveUninitialized: false,
cookie: {
secure: process.env.NODE_ENV === 'production',
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24, // 24 hours
},
})
);
// Health check
app.get('/health', (req, res) => {
res.json({ status: 'ok' });
});
// API Routes
app.use('/api/v1/assets', assetsRouter);
app.use('/api/v1/projects', projectsRouter);
app.use('/api/v1/bins', binsRouter);
app.use('/api/v1/jobs', jobsRouter);
app.use('/api/v1/capture', captureRouter);
2026-04-07 22:05:39 -04:00
app.use('/api/v1/upload', uploadRouter);
app.use('/api/v1/recorders', recordersRouter);
app.use('/api/v1/settings', settingsRouter);
app.use('/api/v1/ampp', amppRouter);
2026-04-07 21:58:25 -04:00
// Error handler
app.use(errorHandler);
// Start server
app.listen(PORT, () => {
console.log(`MAM API listening on port ${PORT}`);
});