From 7fe3a28a7611da5b5734646a02168bbcdaddefc2 Mon Sep 17 00:00:00 2001 From: cv <34649812+cpvalente@users.noreply.github.com> Date: Mon, 24 May 2021 23:16:19 +0200 Subject: [PATCH] migrate logic --- server/app.js | 4 +- server/controllers/eventsController.js | 67 +++++++++++++++----------- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/server/app.js b/server/app.js index 8244342a3..034e11e90 100644 --- a/server/app.js +++ b/server/app.js @@ -18,7 +18,7 @@ await db.read(); // If file.json doesn't exist, db.data will be null // Set default data -// db.data ||= { events: [] }; +// db.data ||= { events: [] }; NODE v15 - v16 if (db.data == null) { db.data = dbModel; db.write(); @@ -73,7 +73,7 @@ const server = http.createServer(app); // init timer global.timer = new EventTimer(server, config); -global.timer.setupWithEventList(events); +global.timer.setupWithEventList(data.events); // Start server server.listen(port, () => diff --git a/server/controllers/eventsController.js b/server/controllers/eventsController.js index 4768eeb16..bbb2dcb51 100644 --- a/server/controllers/eventsController.js +++ b/server/controllers/eventsController.js @@ -1,26 +1,26 @@ // get database -import { db } from '../app.js'; +import { db, data } from '../app.js'; // utils import { customAlphabet } from 'nanoid'; const nanoid = customAlphabet('1234567890abcdef', 4); import { event as eventDef, + delay as delayDef, block as blockDef, - delay as delayDEf, } from '../data/eventsDefinition.js'; function _getEventsCount() { - return db.get('events').size().value(); + return Array.from(data.events).length; } function _pushNew(entry) { - return db.get('events').push(entry).write(); + return data.events.push(entry).write(); } -function _insertAt(entry, index) { +async function _insertAt(entry, index) { // get events - let events = db.get('events').value(); + let events = data.events; let count = events.length; let order = entry.order; @@ -43,15 +43,18 @@ function _insertAt(entry, index) { } // save events - db.set('events', events).write(); + data.events = events; + await db.write(); } -function _removeById(eventId) { - return db.get('events').remove({ id: eventId }).write(); +async function _removeById(eventId) { + data.events = Array.from(data.events).filter((e) => e.id != eventId); + await db.write(); } function getEventEvents() { - return db.get('events').chain().filter({ type: 'event' }).value(); + // return data.events.filter((e) => e.type === 'event'); + return Array.from(data.events).filter((e) => e.type === 'event'); } // Updates timer object @@ -73,14 +76,14 @@ function _deleteTimerId(entryId) { // Create controller for GET request to '/events' // Returns - export const eventsGetAll = async (req, res) => { - const results = db.get('events').value(); - res.json(results); + res.json(data.events); }; // Create controller for GET request to '/events/:eventId' // Returns - export const eventsGetById = async (req, res) => { - const e = db.get('events').find({ id: req.params.eventId }).value(); + const e = data.events.find({ id: req.params.eventId }).value(); + console.log('event by id', e); res.json(e); }; @@ -99,13 +102,13 @@ export const eventsPost = async (req, res) => { switch (req.body.type) { case 'event': - newEvent = { ...eventDefs.event, ...req.body }; + newEvent = { ...eventDef, ...req.body }; break; case 'delay': - newEvent = { ...eventDefs.delay, ...req.body }; + newEvent = { ...delayDef, ...req.body }; break; case 'block': - newEvent = { ...eventDefs.block, ...req.body }; + newEvent = { ...blockDef, ...req.body }; break; default: @@ -149,17 +152,23 @@ export const eventsPut = async (req, res) => { } try { - db.get('events') - .find({ id: req.body.id }) - .assign({ ...req.body }) - .update('revision', (n) => n + 1) - .write(); + const eventIndex = data.events.findIndex((e) => e.id === req.body.id); + if (eventIndex === -1) { + res.status(400).send(`No Id found found`); + return; + } + + const e = data.events[eventIndex]; + data.events[eventIndex] = { ...e, ...req.body }; + data.events[eventIndex].revision++; + db.write(); // update timer _updateTimersSingle(req.body.id, req.body); res.sendStatus(200); } catch (error) { + console.log(error); res.status(400).send(error); } }; @@ -168,7 +177,7 @@ export const eventsPut = async (req, res) => { // Returns - export const eventsPatch = async (req, res) => { // Code is the same as put, call that - this.eventsPut(req, res); + eventsPut(req, res); }; export const eventsReorder = async (req, res) => { @@ -181,7 +190,7 @@ export const eventsReorder = async (req, res) => { const { index, from, to } = req.body; // get events - let events = db.get('events').value(); + let events = data.events; let idx = events.findIndex((e) => e.id === index, from); // Check if item is at given index @@ -198,7 +207,8 @@ export const eventsReorder = async (req, res) => { events.splice(to, 0, reorderedItem); // save events - db.set('events', events).write(); + data.events = events; + db.write(); // TODO: would it be more efficient to reorder at timer? // update timer @@ -222,7 +232,7 @@ export const eventsApplyDelay = async (req, res) => { try { // get events - let events = db.get('events').value(); + let events = data.events; // AUX let delayIndex = null; @@ -263,7 +273,8 @@ export const eventsApplyDelay = async (req, res) => { if (blockIndex) events.splice(blockIndex - 1, 1); // update events - db.set('events', events).write(); + data.events = events; + db.write(); // update timer _updateTimers(); @@ -305,14 +316,14 @@ export const eventsDelete = async (req, res) => { export const eventsDeleteAll = async (req, res) => { try { // set with nothing - db.set('events', []).write(); + data.events = []; + db.write(); // update timer object _updateTimersSingle(); res.sendStatus(201); } catch (error) { - console.log('debug:', error); res.status(400).send(error); } };