UNPKG

1.7 kBJavaScriptView Raw
1exports.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
36exports.down = function(knex) {
37 return knex.schema
38 .dropTable('post_tag')
39 .dropTable('post')
40 .dropTable('tag')
41 .dropTable('user');
42};