aboutsummaryrefslogtreecommitdiff
path: root/src/api/database/migrations/20190221225812_initialMigration.js
diff options
context:
space:
mode:
authorPitu <[email protected]>2019-02-21 23:49:29 +0900
committerPitu <[email protected]>2019-02-21 23:49:29 +0900
commit44e6fd31d2fa7761c90ff1d6932cf69d163b22e8 (patch)
treecaa404d59b5817e5a302df55d66a740765fc24d2 /src/api/database/migrations/20190221225812_initialMigration.js
parentderp (diff)
downloadhost.fuwn.me-44e6fd31d2fa7761c90ff1d6932cf69d163b22e8.tar.xz
host.fuwn.me-44e6fd31d2fa7761c90ff1d6932cf69d163b22e8.zip
Database migration and seeding
Diffstat (limited to 'src/api/database/migrations/20190221225812_initialMigration.js')
-rw-r--r--src/api/database/migrations/20190221225812_initialMigration.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/api/database/migrations/20190221225812_initialMigration.js b/src/api/database/migrations/20190221225812_initialMigration.js
new file mode 100644
index 0000000..455d5c5
--- /dev/null
+++ b/src/api/database/migrations/20190221225812_initialMigration.js
@@ -0,0 +1,69 @@
+exports.up = async knex => {
+ await knex.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');
+ });
+
+ await knex.schema.createTable('albums', table => {
+ table.increments();
+ table.integer('userId');
+ table.string('name');
+ table.timestamp('zippedAt');
+ table.timestamp('createdAt');
+ table.timestamp('editedAt');
+ });
+
+ await knex.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');
+ });
+
+ await knex.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');
+ });
+
+ await knex.schema.createTable('albumsFiles', table => {
+ table.increments();
+ table.integer('albumId');
+ table.integer('fileId');
+ });
+
+ await knex.schema.createTable('albumsLinks', table => {
+ table.increments();
+ table.integer('albumId');
+ table.integer('linkId');
+ });
+};
+exports.down = async knex => {
+ await knex.schema.dropTableIfExists('users');
+ await knex.schema.dropTableIfExists('albums');
+ await knex.schema.dropTableIfExists('files');
+ await knex.schema.dropTableIfExists('links');
+ await knex.schema.dropTableIfExists('albumsFiles');
+ await knex.schema.dropTableIfExists('albumsLinks');
+};