mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-04 15:08:01 +00:00
84 lines
2.0 KiB
JavaScript
84 lines
2.0 KiB
JavaScript
// get config
|
|
const config = require('./config.json');
|
|
|
|
// init database
|
|
const low = require('lowdb');
|
|
const FileSync = require('lowdb/adapters/FileSync');
|
|
|
|
const adapter = new FileSync(config.database.filename);
|
|
const db = low(adapter);
|
|
|
|
// dependencies
|
|
const express = require('express');
|
|
const http = require('http');
|
|
const cors = require('cors');
|
|
const { dbModel } = require('./data/dataModel.js');
|
|
const path = require('path');
|
|
|
|
db.defaults(dbModel).write();
|
|
|
|
// export db
|
|
module.exports.db = db;
|
|
|
|
// Import Routes
|
|
const eventsRouter = require('./routes/eventsRouter.js');
|
|
const eventRouter = require('./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
|
|
const EventTimer = require('./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);
|
|
|
|
// serve react
|
|
app.use(express.static(path.join(__dirname, '../client/build')));
|
|
|
|
app.get('*', (req, res) => {
|
|
res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html'));
|
|
});
|
|
|
|
// Implement route for errors
|
|
app.use((err, req, res, next) => {
|
|
console.error(err.stack);
|
|
res.status(500).send(err.stack);
|
|
});
|
|
|
|
// create HTTP server
|
|
const server = http.createServer(app);
|
|
|
|
// get data (if any)
|
|
const eventlist = db.get('events').value();
|
|
|
|
// init timer
|
|
global.timer = new EventTimer(server, config);
|
|
global.timer.setupWithEventList(eventlist);
|
|
|
|
// Start server
|
|
server.listen(port, '0.0.0.0', () =>
|
|
console.log(`HTTP Server is listening on port ${port}`)
|
|
);
|
|
|
|
// Start OSC server
|
|
const { initiateOSC } = require('./controllers/OscController.js');
|
|
|
|
initiateOSC(config.osc);
|