aboutsummaryrefslogtreecommitdiff
path: root/src/api/database
diff options
context:
space:
mode:
authorPitu <[email protected]>2021-03-25 02:03:57 +0900
committerPitu <[email protected]>2021-03-25 02:03:57 +0900
commit3f223a9dbfd3f79c1a8f01c6a95d14035cddeefe (patch)
tree103dcee83a84c1b7a3b33f7339d7deb8b2ed56bb /src/api/database
parentchore: move database migration script (diff)
downloadhost.fuwn.me-3f223a9dbfd3f79c1a8f01c6a95d14035cddeefe.tar.xz
host.fuwn.me-3f223a9dbfd3f79c1a8f01c6a95d14035cddeefe.zip
feat: implement initial values and saving to db logic
Diffstat (limited to 'src/api/database')
-rw-r--r--src/api/database/migrations/20210112011802_addSettingsTable.js24
-rw-r--r--src/api/database/seeds/initial.js13
2 files changed, 35 insertions, 2 deletions
diff --git a/src/api/database/migrations/20210112011802_addSettingsTable.js b/src/api/database/migrations/20210112011802_addSettingsTable.js
index 2708352..3acd845 100644
--- a/src/api/database/migrations/20210112011802_addSettingsTable.js
+++ b/src/api/database/migrations/20210112011802_addSettingsTable.js
@@ -1,7 +1,27 @@
exports.up = async knex => {
await knex.schema.createTable('settings', table => {
- table.string('key').unique();
- table.json('value').notNullable();
+ table.string('routePrefix');
+ table.integer('rateLimitWindow');
+ table.integer('rateLimitMax');
+ table.string('secret');
+ table.string('serviceName');
+ table.string('domain');
+ table.integer('chunkSize');
+ table.integer('maxSize');
+ table.boolean('generateZips');
+ table.integer('generatedFilenameLength');
+ table.integer('generatedAlbumLength');
+ table.integer('maxLinksPerAlbum');
+ table.string('uploadFolder');
+ table.json('blockedExtensions');
+ table.boolean('publicMode');
+ table.boolean('userAccounts');
+ table.string('adminAccount');
+ table.string('adminPassword');
+ table.string('metaThemeColor');
+ table.string('metaDescription');
+ table.string('metaKeywords');
+ table.string('metaTwitterHandle');
});
};
diff --git a/src/api/database/seeds/initial.js b/src/api/database/seeds/initial.js
index edc1949..bb60b2c 100644
--- a/src/api/database/seeds/initial.js
+++ b/src/api/database/seeds/initial.js
@@ -1,9 +1,22 @@
/* eslint-disable no-console */
const bcrypt = require('bcrypt');
const moment = require('moment');
+const Util = require('../../utils/Util');
exports.seed = async db => {
const now = moment.utc().toDate();
+
+ // Save environment variables to the database
+ try {
+ const settings = await db.table('settings').first();
+ if (!settings) {
+ await Util.writeConfigToDb(Util.getEnvironmentDefaults(), false);
+ }
+ } catch (error) {
+ console.error(error);
+ }
+
+ // Create admin user if it doesnt exist
const user = await db.table('users').where({ username: process.env.ADMIN_ACCOUNT }).first();
if (user) return;
try {