Refactored database to separate IDs from slugs
This commit is contained in:
@@ -2,65 +2,67 @@
|
||||
|
||||
exports.up = knex => Promise.resolve()
|
||||
.then(() => knex.schema.createTable('actors', (table) => {
|
||||
table.increments('id', 8);
|
||||
table.increments('id', 12);
|
||||
|
||||
table.string('name')
|
||||
.unique()
|
||||
.notNullable();
|
||||
table.string('gender', 18);
|
||||
|
||||
table.integer('alias_for', 8)
|
||||
table.integer('alias_for', 12)
|
||||
.references('id')
|
||||
.inTable('actors');
|
||||
|
||||
table.integer('photos', 3)
|
||||
.defaultTo(0);
|
||||
table.string('slug', 32)
|
||||
.unique();
|
||||
}))
|
||||
.then(() => knex.schema.createTable('directors', (table) => {
|
||||
table.increments('id', 8);
|
||||
table.increments('id', 12);
|
||||
|
||||
table.string('name');
|
||||
table.integer('alias_for', 8)
|
||||
table.integer('alias_for', 12)
|
||||
.references('id')
|
||||
.inTable('directors');
|
||||
|
||||
table.integer('photos', 3)
|
||||
.defaultTo(0);
|
||||
table.string('slug', 32)
|
||||
.unique();
|
||||
}))
|
||||
.then(() => knex.schema.createTable('tags_groups', (table) => {
|
||||
table.string('group', 20)
|
||||
.primary();
|
||||
table.increments('id', 12);
|
||||
|
||||
table.string('name', 32);
|
||||
table.string('group', 32);
|
||||
table.string('slug', 32)
|
||||
.unique();
|
||||
}))
|
||||
.then(() => knex.schema.createTable('tags', (table) => {
|
||||
table.string('tag', 32)
|
||||
.primary();
|
||||
table.increments('id', 12);
|
||||
table.string('tag');
|
||||
|
||||
table.integer('capitalization', 1)
|
||||
.defaultTo(0);
|
||||
|
||||
table.string('group_id', 20)
|
||||
.references('group')
|
||||
table.integer('group_id', 12)
|
||||
.references('id')
|
||||
.inTable('tags_groups');
|
||||
|
||||
table.string('alias_for', 32)
|
||||
.references('tag')
|
||||
table.integer('alias_for', 12)
|
||||
.references('id')
|
||||
.inTable('tags');
|
||||
|
||||
table.string('slug', 32)
|
||||
.unique();
|
||||
}))
|
||||
.then(() => knex.schema.createTable('networks', (table) => {
|
||||
table.string('id', 32)
|
||||
.primary();
|
||||
table.increments('id', 12);
|
||||
|
||||
table.string('name');
|
||||
table.string('url');
|
||||
table.text('description');
|
||||
|
||||
table.string('slug', 32)
|
||||
.unique();
|
||||
}))
|
||||
.then(() => knex.schema.createTable('sites', (table) => {
|
||||
table.string('id', 32)
|
||||
.primary();
|
||||
table.increments('id', 12);
|
||||
|
||||
table.string('network_id', 32)
|
||||
table.integer('network_id', 12)
|
||||
.notNullable()
|
||||
.references('id')
|
||||
.inTable('networks');
|
||||
@@ -69,11 +71,14 @@ exports.up = knex => Promise.resolve()
|
||||
table.string('url');
|
||||
table.text('description');
|
||||
table.string('parameters');
|
||||
|
||||
table.string('slug', 32)
|
||||
.unique();
|
||||
}))
|
||||
.then(() => knex.schema.createTable('releases', (table) => {
|
||||
table.increments('id', 12);
|
||||
table.increments('id', 16);
|
||||
|
||||
table.string('site_id', 32)
|
||||
table.integer('site_id', 12)
|
||||
.notNullable()
|
||||
.references('id')
|
||||
.inTable('sites');
|
||||
@@ -88,16 +93,13 @@ exports.up = knex => Promise.resolve()
|
||||
table.date('date');
|
||||
table.text('description');
|
||||
|
||||
table.integer('director', 8)
|
||||
table.integer('director', 12)
|
||||
.references('id')
|
||||
.inTable('directors');
|
||||
|
||||
table.integer('duration')
|
||||
.unsigned();
|
||||
|
||||
table.integer('photos', 3)
|
||||
.defaultTo(0);
|
||||
|
||||
table.integer('likes')
|
||||
.unsigned();
|
||||
|
||||
@@ -110,10 +112,22 @@ exports.up = knex => Promise.resolve()
|
||||
table.datetime('created_at')
|
||||
.defaultTo(knex.fn.now());
|
||||
}))
|
||||
.then(() => knex.schema.createTable('media', (table) => {
|
||||
table.increments('id', 16);
|
||||
|
||||
table.string('file');
|
||||
table.integer('index');
|
||||
table.string('mime');
|
||||
|
||||
table.enum('domain', ['networks', 'sites', 'releases', 'actors', 'directors']);
|
||||
table.integer('target_id', 16);
|
||||
|
||||
table.enum('role', ['poster', 'logo', 'profile']);
|
||||
}))
|
||||
.then(() => knex.schema.createTable('actors_associated', (table) => {
|
||||
table.increments('id', 16);
|
||||
|
||||
table.integer('release_id', 12)
|
||||
table.integer('release_id', 16)
|
||||
.notNullable()
|
||||
.references('id')
|
||||
.inTable('releases');
|
||||
@@ -126,7 +140,7 @@ exports.up = knex => Promise.resolve()
|
||||
.then(() => knex.schema.createTable('directors_associated', (table) => {
|
||||
table.increments('id', 16);
|
||||
|
||||
table.integer('release_id', 12)
|
||||
table.integer('release_id', 16)
|
||||
.notNullable()
|
||||
.references('id')
|
||||
.inTable('releases');
|
||||
@@ -137,16 +151,16 @@ exports.up = knex => Promise.resolve()
|
||||
.inTable('directors');
|
||||
}))
|
||||
.then(() => knex.schema.createTable('tags_associated', (table) => {
|
||||
table.string('tag_id', 20)
|
||||
table.integer('tag_id', 12)
|
||||
.notNullable()
|
||||
.references('tag')
|
||||
.references('id')
|
||||
.inTable('tags');
|
||||
|
||||
table.string('site_id')
|
||||
table.integer('site_id', 12)
|
||||
.references('id')
|
||||
.inTable('sites');
|
||||
|
||||
table.integer('release_id', 12)
|
||||
table.integer('release_id', 16)
|
||||
.references('id')
|
||||
.inTable('releases');
|
||||
}));
|
||||
@@ -157,6 +171,7 @@ exports.down = knex => Promise.resolve()
|
||||
.then(() => knex.schema.dropTable('actors_associated'))
|
||||
.then(() => knex.schema.dropTable('tags'))
|
||||
.then(() => knex.schema.dropTable('tags_groups'))
|
||||
.then(() => knex.schema.dropTable('media'))
|
||||
.then(() => knex.schema.dropTable('actors'))
|
||||
.then(() => knex.schema.dropTable('releases'))
|
||||
.then(() => knex.schema.dropTable('sites'))
|
||||
|
||||
Reference in New Issue
Block a user