1 | exports.up = function(knex) {
|
2 | return knex.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"')
|
3 | .then(function() {
|
4 | return knex.schema
|
5 | .createTable('user', function(table) {
|
6 | table.uuid('id').primary().defaultTo(knex.raw('uuid_generate_v4()'));
|
7 | table.string('email').notNullable().unique();
|
8 | table.string('username').notNullable().unique();
|
9 | table.string('password').notNullable();
|
10 | table.string('team');
|
11 | table.boolean('private');
|
12 | table.dateTime('created_at').defaultTo(knex.fn.now());
|
13 | table.dateTime('updated_at').defaultTo(knex.fn.now());
|
14 | })
|
15 | .createTable('tag', function(table) {
|
16 | table.uuid('id').primary().defaultTo(knex.raw('uuid_generate_v4()'));
|
17 | table.string('name').notNullable().unique();
|
18 | table.dateTime('created_at').defaultTo(knex.fn.now());
|
19 | table.dateTime('updated_at').defaultTo(knex.fn.now());
|
20 | })
|
21 | .createTable('post', function(table) {
|
22 | table.uuid('id').primary().defaultTo(knex.raw('uuid_generate_v4()'));
|
23 | table.string('title').notNullable();
|
24 | table.string('content');
|
25 | table.uuid('user_id').notNullable().references('user.id').onDelete('CASCADE');
|
26 | table.dateTime('created_at').defaultTo(knex.fn.now());
|
27 | table.dateTime('updated_at').defaultTo(knex.fn.now());
|
28 | })
|
29 | .createTable('post_tag', function(table) {
|
30 | table.uuid('post_id').references('post.id').onDelete('CASCADE');
|
31 | table.uuid('tag_id').references('tag.id').onDelete('CASCADE');
|
32 | });
|
33 | });
|
34 | };
|
35 |
|
36 | exports.down = function(knex) {
|
37 | return knex.schema
|
38 | .dropTable('post_tag')
|
39 | .dropTable('post')
|
40 | .dropTable('tag')
|
41 | .dropTable('user');
|
42 | };
|