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
// 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, () =>
+39 -28
View File
@@ -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);
}
};