migrate logic

This commit is contained in:
cv
2021-05-24 23:16:19 +02:00
parent 7406d54472
commit 7fe3a28a76
2 changed files with 41 additions and 30 deletions
+2 -2
View File
@@ -18,7 +18,7 @@ await db.read();
// If file.json doesn't exist, db.data will be null // If file.json doesn't exist, db.data will be null
// Set default data // Set default data
// db.data ||= { events: [] }; // db.data ||= { events: [] }; NODE v15 - v16
if (db.data == null) { if (db.data == null) {
db.data = dbModel; db.data = dbModel;
db.write(); db.write();
@@ -73,7 +73,7 @@ const server = http.createServer(app);
// init timer // init timer
global.timer = new EventTimer(server, config); global.timer = new EventTimer(server, config);
global.timer.setupWithEventList(events); global.timer.setupWithEventList(data.events);
// Start server // Start server
server.listen(port, () => server.listen(port, () =>
+39 -28
View File
@@ -1,26 +1,26 @@
// get database // get database
import { db } from '../app.js'; import { db, data } from '../app.js';
// utils // utils
import { customAlphabet } from 'nanoid'; import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('1234567890abcdef', 4); const nanoid = customAlphabet('1234567890abcdef', 4);
import { import {
event as eventDef, event as eventDef,
delay as delayDef,
block as blockDef, block as blockDef,
delay as delayDEf,
} from '../data/eventsDefinition.js'; } from '../data/eventsDefinition.js';
function _getEventsCount() { function _getEventsCount() {
return db.get('events').size().value(); return Array.from(data.events).length;
} }
function _pushNew(entry) { 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 // get events
let events = db.get('events').value(); let events = data.events;
let count = events.length; let count = events.length;
let order = entry.order; let order = entry.order;
@@ -43,15 +43,18 @@ function _insertAt(entry, index) {
} }
// save events // save events
db.set('events', events).write(); data.events = events;
await db.write();
} }
function _removeById(eventId) { async function _removeById(eventId) {
return db.get('events').remove({ id: eventId }).write(); data.events = Array.from(data.events).filter((e) => e.id != eventId);
await db.write();
} }
function getEventEvents() { 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 // Updates timer object
@@ -73,14 +76,14 @@ function _deleteTimerId(entryId) {
// Create controller for GET request to '/events' // Create controller for GET request to '/events'
// Returns - // Returns -
export const eventsGetAll = async (req, res) => { export const eventsGetAll = async (req, res) => {
const results = db.get('events').value(); res.json(data.events);
res.json(results);
}; };
// Create controller for GET request to '/events/:eventId' // Create controller for GET request to '/events/:eventId'
// Returns - // Returns -
export const eventsGetById = async (req, res) => { 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); res.json(e);
}; };
@@ -99,13 +102,13 @@ export const eventsPost = async (req, res) => {
switch (req.body.type) { switch (req.body.type) {
case 'event': case 'event':
newEvent = { ...eventDefs.event, ...req.body }; newEvent = { ...eventDef, ...req.body };
break; break;
case 'delay': case 'delay':
newEvent = { ...eventDefs.delay, ...req.body }; newEvent = { ...delayDef, ...req.body };
break; break;
case 'block': case 'block':
newEvent = { ...eventDefs.block, ...req.body }; newEvent = { ...blockDef, ...req.body };
break; break;
default: default:
@@ -149,17 +152,23 @@ export const eventsPut = async (req, res) => {
} }
try { try {
db.get('events') const eventIndex = data.events.findIndex((e) => e.id === req.body.id);
.find({ id: req.body.id }) if (eventIndex === -1) {
.assign({ ...req.body }) res.status(400).send(`No Id found found`);
.update('revision', (n) => n + 1) return;
.write(); }
const e = data.events[eventIndex];
data.events[eventIndex] = { ...e, ...req.body };
data.events[eventIndex].revision++;
db.write();
// update timer // update timer
_updateTimersSingle(req.body.id, req.body); _updateTimersSingle(req.body.id, req.body);
res.sendStatus(200); res.sendStatus(200);
} catch (error) { } catch (error) {
console.log(error);
res.status(400).send(error); res.status(400).send(error);
} }
}; };
@@ -168,7 +177,7 @@ export const eventsPut = async (req, res) => {
// Returns - // Returns -
export const eventsPatch = async (req, res) => { export const eventsPatch = async (req, res) => {
// Code is the same as put, call that // Code is the same as put, call that
this.eventsPut(req, res); eventsPut(req, res);
}; };
export const eventsReorder = async (req, res) => { export const eventsReorder = async (req, res) => {
@@ -181,7 +190,7 @@ export const eventsReorder = async (req, res) => {
const { index, from, to } = req.body; const { index, from, to } = req.body;
// get events // get events
let events = db.get('events').value(); let events = data.events;
let idx = events.findIndex((e) => e.id === index, from); let idx = events.findIndex((e) => e.id === index, from);
// Check if item is at given index // Check if item is at given index
@@ -198,7 +207,8 @@ export const eventsReorder = async (req, res) => {
events.splice(to, 0, reorderedItem); events.splice(to, 0, reorderedItem);
// save events // save events
db.set('events', events).write(); data.events = events;
db.write();
// TODO: would it be more efficient to reorder at timer? // TODO: would it be more efficient to reorder at timer?
// update timer // update timer
@@ -222,7 +232,7 @@ export const eventsApplyDelay = async (req, res) => {
try { try {
// get events // get events
let events = db.get('events').value(); let events = data.events;
// AUX // AUX
let delayIndex = null; let delayIndex = null;
@@ -263,7 +273,8 @@ export const eventsApplyDelay = async (req, res) => {
if (blockIndex) events.splice(blockIndex - 1, 1); if (blockIndex) events.splice(blockIndex - 1, 1);
// update events // update events
db.set('events', events).write(); data.events = events;
db.write();
// update timer // update timer
_updateTimers(); _updateTimers();
@@ -305,14 +316,14 @@ export const eventsDelete = async (req, res) => {
export const eventsDeleteAll = async (req, res) => { export const eventsDeleteAll = async (req, res) => {
try { try {
// set with nothing // set with nothing
db.set('events', []).write(); data.events = [];
db.write();
// update timer object // update timer object
_updateTimersSingle(); _updateTimersSingle();
res.sendStatus(201); res.sendStatus(201);
} catch (error) { } catch (error) {
console.log('debug:', error);
res.status(400).send(error); res.status(400).send(error);
} }
}; };