aboutsummaryrefslogtreecommitdiff
path: root/src/api/database
diff options
context:
space:
mode:
authorKana <[email protected]>2020-12-24 21:41:24 +0900
committerGitHub <[email protected]>2020-12-24 21:41:24 +0900
commit2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab (patch)
treedbf2b2cad342f31849a62089dedd40165758af86 /src/api/database
parentEnable deleting files with the API key (diff)
parentbug: fix showlist resetting itself every time the page is changed (diff)
downloadhost.fuwn.me-2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab.tar.xz
host.fuwn.me-2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab.zip
Merge pull request #228 from Zephyrrus/begone_trailing_commas
Merge own dev branch into main dev branch
Diffstat (limited to 'src/api/database')
-rw-r--r--src/api/database/migrations/20190221225812_initialMigration.js40
-rw-r--r--src/api/database/seeds/initial.js3
2 files changed, 28 insertions, 15 deletions
diff --git a/src/api/database/migrations/20190221225812_initialMigration.js b/src/api/database/migrations/20190221225812_initialMigration.js
index a27a08a..b755a33 100644
--- a/src/api/database/migrations/20190221225812_initialMigration.js
+++ b/src/api/database/migrations/20190221225812_initialMigration.js
@@ -1,40 +1,44 @@
-exports.up = async knex => {
- await knex.schema.createTable('users', table => {
+exports.up = async (knex) => {
+ await knex.schema.createTable('users', (table) => {
table.increments();
- table.string('username');
+ table.string('username').unique();
table.text('password');
table.boolean('enabled');
table.boolean('isAdmin');
- table.string('apiKey');
+ table.string('apiKey').unique();
table.timestamp('passwordEditedAt');
table.timestamp('apiKeyEditedAt');
table.timestamp('createdAt');
table.timestamp('editedAt');
});
- await knex.schema.createTable('albums', table => {
+ await knex.schema.createTable('albums', (table) => {
table.increments();
table.integer('userId');
table.string('name');
+ table.boolean('nsfw').defaultTo(false);
table.timestamp('zippedAt');
table.timestamp('createdAt');
table.timestamp('editedAt');
+
+ table.unique(['userId', 'name']);
});
- await knex.schema.createTable('files', table => {
+ await knex.schema.createTable('files', (table) => {
table.increments();
table.integer('userId');
table.string('name');
table.string('original');
table.string('type');
table.integer('size');
+ table.boolean('nsfw').defaultTo(false);
table.string('hash');
table.string('ip');
table.timestamp('createdAt');
table.timestamp('editedAt');
});
- await knex.schema.createTable('links', table => {
+ await knex.schema.createTable('links', (table) => {
table.increments();
table.integer('userId');
table.integer('albumId');
@@ -45,42 +49,50 @@ exports.up = async knex => {
table.timestamp('expiresAt');
table.timestamp('createdAt');
table.timestamp('editedAt');
+
+ table.unique(['userId', 'albumId', 'identifier']);
});
- await knex.schema.createTable('albumsFiles', table => {
+ await knex.schema.createTable('albumsFiles', (table) => {
table.increments();
table.integer('albumId');
table.integer('fileId');
+
+ table.unique(['albumId', 'fileId']);
});
- await knex.schema.createTable('albumsLinks', table => {
+ await knex.schema.createTable('albumsLinks', (table) => {
table.increments();
table.integer('albumId');
- table.integer('linkId');
+ table.integer('linkId').unique();
});
- await knex.schema.createTable('tags', table => {
+ await knex.schema.createTable('tags', (table) => {
table.increments();
table.string('uuid');
table.integer('userId');
table.string('name');
table.timestamp('createdAt');
table.timestamp('editedAt');
+
+ table.unique(['userId', 'name']);
});
- await knex.schema.createTable('fileTags', table => {
+ await knex.schema.createTable('fileTags', (table) => {
table.increments();
table.integer('fileId');
table.integer('tagId');
+
+ table.unique(['fileId', 'tagId']);
});
- await knex.schema.createTable('bans', table => {
+ await knex.schema.createTable('bans', (table) => {
table.increments();
table.string('ip');
table.timestamp('createdAt');
});
};
-exports.down = async knex => {
+exports.down = async (knex) => {
await knex.schema.dropTableIfExists('users');
await knex.schema.dropTableIfExists('albums');
await knex.schema.dropTableIfExists('files');
diff --git a/src/api/database/seeds/initial.js b/src/api/database/seeds/initial.js
index 280fd74..2383a7b 100644
--- a/src/api/database/seeds/initial.js
+++ b/src/api/database/seeds/initial.js
@@ -1,7 +1,8 @@
+/* eslint-disable no-console */
const bcrypt = require('bcrypt');
const moment = require('moment');
-exports.seed = async db => {
+exports.seed = async (db) => {
const now = moment.utc().toDate();
const user = await db.table('users').where({ username: process.env.ADMIN_ACCOUNT }).first();
if (user) return;