feat: change mutation timestamp on every database mutation

This commit is contained in:
Zephyrrus 2021-01-07 21:36:56 +02:00
parent d4b1550439
commit b3df1dd7a6
19 changed files with 40 additions and 22 deletions

View File

@ -14,7 +14,8 @@ class userDemote extends Route {
try {
await db.table('users')
.where({ id })
.update({ isAdmin: false });
.update({ isAdmin: false })
.wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -14,7 +14,8 @@ class userDisable extends Route {
try {
await db.table('users')
.where({ id })
.update({ enabled: false });
.update({ enabled: false })
.wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -14,7 +14,8 @@ class userEnable extends Route {
try {
await db.table('users')
.where({ id })
.update({ enabled: true });
.update({ enabled: true })
.wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -26,7 +26,8 @@ class albumDELETE extends Route {
await db.table('albumsLinks').where({ albumId: id }).delete();
// Delete any album links created for this album
await db.table('links').where({ albumId: id }).delete();
await db.table('links').where({ albumId: id }).delete()
.wasMutated();
return res.json({ message: 'The album was deleted successfully' });
} catch (error) {

View File

@ -28,7 +28,7 @@ class albumPOST extends Route {
editedAt: now
};
const dbRes = await db.table('albums').insert(insertObj);
const dbRes = await db.table('albums').insert(insertObj).wasMutated();
insertObj.id = dbRes.pop();

View File

@ -18,7 +18,8 @@ class albumDELETE extends Route {
try {
await Util.deleteAllFilesFromAlbum(id);
await db.table('albums').where({ id }).delete();
await db.table('albums').where({ id }).delete()
.wasMutated();
return res.json({ message: 'The album was deleted successfully' });
} catch (error) {
return super.error(res, error);

View File

@ -74,7 +74,8 @@ class albumGET extends Route {
Util.createZip(filesToZip, album);
await db.table('albums')
.where('id', link.albumId)
.update('zippedAt', db.fn.now());
.update('zippedAt', db.fn.now())
.wasMutated();
const filePath = path.join(__dirname, '../../../../', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`);
const fileName = `${process.env.SERVICE_NAME}-${identifier}.zip`;

View File

@ -63,7 +63,7 @@ class linkPOST extends Route {
expiresAt: null,
views: 0
};
await db.table('links').insert(insertObj);
await db.table('links').insert(insertObj).wasMutated();
return res.json({
message: 'The link was created successfully',

View File

@ -55,7 +55,7 @@ class registerPOST extends Route {
editedAt: now,
enabled: true,
isAdmin: false
});
}).wasMutated();
return res.json({ message: 'The account was created successfully' });
}
}

View File

@ -18,7 +18,7 @@ class albumAddPOST extends Route {
try {
await db.table('albumsFiles')
.insert({ fileId, albumId });
.insert({ fileId, albumId }).wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -19,7 +19,8 @@ class albumDelPOST extends Route {
try {
await db.table('albumsFiles')
.where({ fileId, albumId })
.delete();
.delete()
.wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -20,7 +20,7 @@ class tagAddBatchPOST extends Route {
try {
const tag = await db.table('tags').where({ name: tagName, userId: user.id }).first();
if (!tag) throw new Error('Tag doesn\'t exist in the database');
await db.table('fileTags').insert({ fileId, tagId: tag.id });
await db.table('fileTags').insert({ fileId, tagId: tag.id }).wasMutated();
addedTags.push(tag);
} catch (e) {

View File

@ -20,7 +20,7 @@ class tagAddPOST extends Route {
if (!tag) return res.status(400).json({ message: 'Tag doesn\'t exist. ' });
try {
await db.table('fileTags').insert({ fileId, tagId: tag.id });
await db.table('fileTags').insert({ fileId, tagId: tag.id }).wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -22,7 +22,8 @@ class tagDelPost extends Route {
try {
await db.table('fileTags')
.where({ fileId, tagId: tag.id })
.delete();
.delete()
.wasMutated();
} catch (error) {
return super.error(res, error);
}

View File

@ -4,7 +4,7 @@ const StatsGenerator = require('../../utils/StatsGenerator');
// Thank you Bobby for the stats code https://github.com/BobbyWibowo/lolisafe/blob/safe.fiery.me/controllers/utilsController.js
class filesGET extends Route {
constructor() {
super('/admin/stats', 'get', { adminOnly: true });
super('/service/statistics', 'get', { adminOnly: true });
}
async run(req, res, db) {

View File

@ -26,7 +26,8 @@ class tagDELETE extends Route {
/*
Delete the tag
*/
await db.table('tags').where({ id }).delete();
await db.table('tags').where({ id }).delete()
.wasMutated();
return res.json({ message: 'The tag was deleted successfully', data: tag });
} catch (error) {
return super.error(res, error);

View File

@ -25,7 +25,7 @@ class tagPOST extends Route {
editedAt: now
};
const dbRes = await db.table('tags').insert(insertObj);
const dbRes = await db.table('tags').insert(insertObj).wasMutated();
insertObj.id = dbRes.pop();

View File

@ -1,5 +1,13 @@
const nodePath = require('path');
const db = require('knex')({
const Knex = require('knex');
// eslint-disable-next-line func-names
Knex.QueryBuilder.extend('wasMutated', function() {
this.client.config.userParams.lastMutationTime = Date.now();
return this;
});
const db = Knex({
client: process.env.DB_CLIENT,
connection: {
host: process.env.DB_HOST,

View File

@ -99,7 +99,8 @@ class Util {
await db
.table('files')
.where('name', filename)
.delete();
.delete()
.wasMutated();
}
} catch (error) {
log.error(`There was an error removing the file < ${filename} >`);
@ -257,9 +258,9 @@ class Util {
let fileId;
if (process.env.DB_CLIENT === 'sqlite3') {
fileId = await db.table('files').insert(data);
fileId = await db.table('files').insert(data).wasMutated();
} else {
fileId = await db.table('files').insert(data, 'id');
fileId = await db.table('files').insert(data, 'id').wasMutated();
}
return {
@ -273,7 +274,7 @@ class Util {
const now = moment.utc().toDate();
try {
await db.table('albumsFiles').insert({ albumId, fileId: insertedId[0] });
await db.table('albumsFiles').insert({ albumId, fileId: insertedId[0] }).wasMutated();
await db.table('albums').where('id', albumId).update('editedAt', now);
} catch (error) {
console.error(error);