diff options
| author | Pitu <[email protected]> | 2019-02-21 23:49:29 +0900 |
|---|---|---|
| committer | Pitu <[email protected]> | 2019-02-21 23:49:29 +0900 |
| commit | 44e6fd31d2fa7761c90ff1d6932cf69d163b22e8 (patch) | |
| tree | caa404d59b5817e5a302df55d66a740765fc24d2 /src/api/structures | |
| parent | derp (diff) | |
| download | host.fuwn.me-44e6fd31d2fa7761c90ff1d6932cf69d163b22e8.tar.xz host.fuwn.me-44e6fd31d2fa7761c90ff1d6932cf69d163b22e8.zip | |
Database migration and seeding
Diffstat (limited to 'src/api/structures')
| -rw-r--r-- | src/api/structures/Database.js | 112 | ||||
| -rw-r--r-- | src/api/structures/Server.js | 2 |
2 files changed, 0 insertions, 114 deletions
diff --git a/src/api/structures/Database.js b/src/api/structures/Database.js deleted file mode 100644 index 76ea006..0000000 --- a/src/api/structures/Database.js +++ /dev/null @@ -1,112 +0,0 @@ -const log = require('../utils/Log'); -const { server } = require('../../../config'); -const db = require('knex')(server.database); -const bcrypt = require('bcrypt'); -const moment = require('moment'); -const randomstring = require('randomstring'); - -class Database { - constructor() { - this.createTables(); - } - - async createTables() { - if (!await db.schema.hasTable('users')) { - await db.schema.createTable('users', table => { - table.increments(); - table.string('username'); - table.string('password'); - table.boolean('enabled').defaultTo(true); - table.boolean('isAdmin').defaultTo(false); - table.string('apiKey'); - table.timestamp('passwordEditedAt'); - table.timestamp('apiKeyEditedAt'); - table.timestamp('createdAt'); - table.timestamp('editedAt'); - }); - } - - if (!await db.schema.hasTable('albums')) { - await db.schema.createTable('albums', table => { - table.increments(); - table.integer('userId'); - table.string('name'); - // table.string('identifier'); - // table.boolean('enabled'); - // table.boolean('enableDownload').defaultTo(true); - table.timestamp('zippedAt'); - table.timestamp('createdAt'); - table.timestamp('editedAt'); - }); - } - - if (!await db.schema.hasTable('files')) { - await db.schema.createTable('files', table => { - table.increments(); - table.integer('userId'); - table.string('name'); - table.string('original'); - table.string('type'); - table.integer('size'); - table.string('hash'); - table.string('ip'); - table.timestamp('createdAt'); - table.timestamp('editedAt'); - }); - } - - if (!await db.schema.hasTable('links')) { - await db.schema.createTable('links', table => { - table.increments(); - table.integer('userId'); - table.integer('albumId'); - table.string('identifier'); - table.integer('views').defaultTo(0); - table.boolean('enabled').defaultTo(true); - table.boolean('enableDownload').defaultTo(true); - table.timestamp('expiresAt'); - table.timestamp('createdAt'); - table.timestamp('editedAt'); - }); - } - - if (!await db.schema.hasTable('albumsFiles')) { - await db.schema.createTable('albumsFiles', table => { - table.increments(); - table.integer('albumId'); - table.integer('fileId'); - }); - } - - if (!await db.schema.hasTable('albumsLinks')) { - await db.schema.createTable('albumsLinks', table => { - table.increments(); - table.integer('albumId'); - table.integer('linkId'); - }); - } - - const now = moment.utc().toDate(); - const user = await db.table('users').where({ username: 'root' }).first(); - if (user) return; - try { - const hash = await bcrypt.hash('root', 10); - await db.table('users').insert({ - username: 'root', - password: hash, - apiKey: randomstring.generate(64), - passwordEditedAt: now, - apiKeyEditedAt: now, - createdAt: now, - editedAt: now, - isAdmin: true - }); - log.success('Successfully created the root user with password "root". Make sure to log in and change it!'); - } catch (error) { - log.error(error); - if (error) log.error('Error generating password hash for root'); - } - } -} - -module.exports = Database; diff --git a/src/api/structures/Server.js b/src/api/structures/Server.js index dc72558..d2cc2f1 100644 --- a/src/api/structures/Server.js +++ b/src/api/structures/Server.js @@ -8,7 +8,6 @@ const RateLimit = require('express-rate-limit'); const bodyParser = require('body-parser'); const jetpack = require('fs-jetpack'); const path = require('path'); -const Database = require('./Database'); const rateLimiter = new RateLimit({ windowMs: process.env.RATE_LIMIT_WINDOW, @@ -35,7 +34,6 @@ class Server { this.server.use(bodyParser.json()); // this.server.use(rateLimiter); this.routesFolder = path.join(__dirname, '..', 'routes'); - this.database = new Database(); } registerAllTheRoutes() { |