mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-22 07:29:08 +00:00
integrate db and playback
This commit is contained in:
+18
-1
@@ -1,6 +1,16 @@
|
|||||||
// get config
|
// get config
|
||||||
const config = require('./config.json');
|
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);
|
||||||
|
db.defaults({ events: [] }).write();
|
||||||
|
|
||||||
|
// export db
|
||||||
|
module.exports.db = db;
|
||||||
|
|
||||||
// dependencies
|
// dependencies
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const http = require('http');
|
const http = require('http');
|
||||||
@@ -14,9 +24,11 @@ const playbackRouter = require('./routes/playbackRouter.js');
|
|||||||
const port = process.env.PORT || config.server.port;
|
const port = process.env.PORT || config.server.port;
|
||||||
|
|
||||||
// Global Objects
|
// Global Objects
|
||||||
const eventlist = require('./data/eventsData.json');
|
|
||||||
const EventTimer = require('./classes/EventTimer.js');
|
const EventTimer = require('./classes/EventTimer.js');
|
||||||
|
|
||||||
|
// get data (if any)
|
||||||
|
const eventlist = db.get('events').sortBy('order').value();
|
||||||
|
|
||||||
// init timer
|
// init timer
|
||||||
global.timer = new EventTimer();
|
global.timer = new EventTimer();
|
||||||
timer.setupWithEventList(eventlist);
|
timer.setupWithEventList(eventlist);
|
||||||
@@ -38,6 +50,11 @@ app.use(express.json());
|
|||||||
app.use('/events', eventsRouter);
|
app.use('/events', eventsRouter);
|
||||||
app.use('/playback', playbackRouter);
|
app.use('/playback', playbackRouter);
|
||||||
|
|
||||||
|
// implement general router
|
||||||
|
app.get('/', function (req, res) {
|
||||||
|
res.send('ontime API');
|
||||||
|
});
|
||||||
|
|
||||||
// Implement route for errors
|
// Implement route for errors
|
||||||
app.use((err, req, res, next) => {
|
app.use((err, req, res, next) => {
|
||||||
console.error(err.stack);
|
console.error(err.stack);
|
||||||
|
|||||||
@@ -50,6 +50,19 @@ class EventTimer extends Timer {
|
|||||||
this.loadEvent(0);
|
this.loadEvent(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateEventList(eventlist) {
|
||||||
|
// filter only events
|
||||||
|
const events = eventlist.filter((e) => e.type === 'event');
|
||||||
|
|
||||||
|
const numEvents = events.length;
|
||||||
|
|
||||||
|
// set general
|
||||||
|
this._eventList = events;
|
||||||
|
this.numEvents = numEvents;
|
||||||
|
|
||||||
|
// TODO: What to do about reloading
|
||||||
|
}
|
||||||
|
|
||||||
loadEvent(eventIndex) {
|
loadEvent(eventIndex) {
|
||||||
// set event specific
|
// set event specific
|
||||||
const e = this._eventList[eventIndex];
|
const e = this._eventList[eventIndex];
|
||||||
|
|||||||
@@ -4,5 +4,9 @@
|
|||||||
},
|
},
|
||||||
"server": {
|
"server": {
|
||||||
"port": 4001
|
"port": 4001
|
||||||
|
},
|
||||||
|
"database": {
|
||||||
|
"filename": "db.json",
|
||||||
|
"tablename": "events"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,5 @@
|
|||||||
// CONST
|
// get database
|
||||||
const filename = 'db.json';
|
const db = require('../app.js').db;
|
||||||
const tableName = 'events';
|
|
||||||
const countfield = 'eventCount';
|
|
||||||
|
|
||||||
// data
|
|
||||||
const low = require('lowdb');
|
|
||||||
const FileSync = require('lowdb/adapters/FileSync');
|
|
||||||
const adapter = new FileSync('db.json');
|
|
||||||
const db = low(adapter);
|
|
||||||
|
|
||||||
db.defaults({ events: [] }).write();
|
|
||||||
|
|
||||||
// utils
|
// utils
|
||||||
const { nanoid } = require('nanoid');
|
const { nanoid } = require('nanoid');
|
||||||
@@ -44,6 +34,20 @@ function _removeById(eventId) {
|
|||||||
return db.get('events').remove({ id: eventId }).write();
|
return db.get('events').remove({ id: eventId }).write();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getEventEvents() {
|
||||||
|
return db
|
||||||
|
.get('events')
|
||||||
|
.chain()
|
||||||
|
.filter({ type: 'event' })
|
||||||
|
.sortBy('order')
|
||||||
|
.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _updateTimers() {
|
||||||
|
const results = getEventEvents();
|
||||||
|
global.timer.updateEventList(results);
|
||||||
|
}
|
||||||
|
|
||||||
// Create controller for GET request to '/events'
|
// Create controller for GET request to '/events'
|
||||||
// Returns -
|
// Returns -
|
||||||
exports.eventsGetAll = async (req, res) => {
|
exports.eventsGetAll = async (req, res) => {
|
||||||
@@ -98,9 +102,14 @@ exports.eventsPost = async (req, res) => {
|
|||||||
// add new event
|
// add new event
|
||||||
_pushNew(newEvent);
|
_pushNew(newEvent);
|
||||||
|
|
||||||
|
// update timer
|
||||||
|
// TODO: update single values when possible
|
||||||
|
_updateTimers();
|
||||||
|
|
||||||
res.sendStatus(201);
|
res.sendStatus(201);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(400).send(error);
|
res.status(400).send(error);
|
||||||
|
console.log('debug', error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -110,12 +119,16 @@ exports.eventsPut = async (req, res) => {
|
|||||||
// no valid params
|
// no valid params
|
||||||
if (!req.body) {
|
if (!req.body) {
|
||||||
res.status(400).send(`No object found`);
|
res.status(400).send(`No object found`);
|
||||||
|
console.log('error here', 'noobj');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let eventId = req.body.id;
|
let eventId = req.body.id;
|
||||||
if (!eventId) {
|
if (!eventId) {
|
||||||
res.status(400).send(`No id found`);
|
res.status(400).send(`No id found`);
|
||||||
|
console.log('error here', 'noid');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,9 +137,11 @@ exports.eventsPut = async (req, res) => {
|
|||||||
.find({ id: req.body.id })
|
.find({ id: req.body.id })
|
||||||
.assign({ ...req.body })
|
.assign({ ...req.body })
|
||||||
.write()
|
.write()
|
||||||
|
.then(_updateTimers())
|
||||||
.then(res.sendStatus(200));
|
.then(res.sendStatus(200));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(400).send(error);
|
res.status(400).send(error);
|
||||||
|
console.log('error here', error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -151,6 +166,10 @@ exports.eventsPatch = async (req, res) => {
|
|||||||
.assign({ ...req.body })
|
.assign({ ...req.body })
|
||||||
.write();
|
.write();
|
||||||
|
|
||||||
|
// update timer
|
||||||
|
// TODO: update single values when possible
|
||||||
|
_updateTimers();
|
||||||
|
|
||||||
res.sendStatus(200);
|
res.sendStatus(200);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(400).send(error);
|
res.status(400).send(error);
|
||||||
@@ -177,6 +196,10 @@ exports.eventsDelete = async (req, res) => {
|
|||||||
// add new event
|
// add new event
|
||||||
_removeById(req.params.eventId);
|
_removeById(req.params.eventId);
|
||||||
|
|
||||||
|
// update timer
|
||||||
|
// TODO: update single values when possible
|
||||||
|
_updateTimers();
|
||||||
|
|
||||||
res.sendStatus(201);
|
res.sendStatus(201);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(400).send(error);
|
res.status(400).send(error);
|
||||||
|
|||||||
Reference in New Issue
Block a user