mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-04 15:08:01 +00:00
87 lines
1.9 KiB
JavaScript
87 lines
1.9 KiB
JavaScript
// get config
|
|
import { config } from './config.js';
|
|
|
|
// init database
|
|
import { Low, JSONFile } from 'lowdb';
|
|
|
|
const adapter = new JSONFile(config.database.filename);
|
|
export const db = new Low(adapter);
|
|
|
|
// dependencies
|
|
import express from 'express';
|
|
import http from 'http';
|
|
import cors from 'cors';
|
|
import { dbModel } from './data/dataModel.js';
|
|
|
|
// Read data from JSON file, this will set db.data content
|
|
await db.read();
|
|
|
|
// If file.json doesn't exist, db.data will be null
|
|
// Set default data
|
|
// db.data ||= { events: [] }; NODE v15 - v16
|
|
if (db.data == null) {
|
|
db.data = dbModel;
|
|
db.write();
|
|
}
|
|
|
|
// get data
|
|
export const data = db.data;
|
|
|
|
// Import Routes
|
|
import { router as eventsRouter } from './routes/eventsRouter.js';
|
|
import { router as eventRouter } from './routes/eventRouter.js';
|
|
|
|
// No settings yet
|
|
// const settingsRouter = require('./routes/settingsRouter.js');
|
|
|
|
// Setup default port
|
|
const port = process.env.PORT || config.server.port;
|
|
|
|
// Global Objects
|
|
import { EventTimer } from './classes/EventTimer.js';
|
|
|
|
// Create express APP
|
|
const app = express();
|
|
|
|
// setup cors for all routes
|
|
app.use(cors());
|
|
|
|
// enable pre-flight cors
|
|
app.options('*', cors());
|
|
|
|
// Implement middleware
|
|
app.use(express.urlencoded({ extended: true }));
|
|
app.use(express.json());
|
|
|
|
// Implement route endpoints
|
|
app.use('/events', eventsRouter);
|
|
app.use('/event', eventRouter);
|
|
|
|
// implement general router
|
|
app.get('/', (req, res) => {
|
|
res.send('ontime API');
|
|
});
|
|
|
|
// Implement route for errors
|
|
app.use((err, req, res, next) => {
|
|
console.error(err.stack);
|
|
res.status(500).send('Something broke!');
|
|
});
|
|
|
|
// create HTTP server
|
|
const server = http.createServer(app);
|
|
|
|
// init timer
|
|
global.timer = new EventTimer(server, config);
|
|
global.timer.setupWithEventList(data.events);
|
|
|
|
// Start server
|
|
server.listen(port, () =>
|
|
console.log(`HTTP Server is listening on port ${port}`)
|
|
);
|
|
|
|
// Start OSC server
|
|
import { initiateOSC } from './controllers/OscController.js';
|
|
|
|
initiateOSC(config.osc);
|