/** * @param { import("knex").Knex } knex * @returns { Promise } */ exports.up = function(knex) { return knex.schema .createTable('categories', function (table) { table.uuid('id').primary().defaultTo(knex.raw(`gen_random_uuid()`)); table.string('name').notNullable(); table.timestamps(true, true); }) .alterTable('places', function(table) { table.uuid('category_id').references('id').inTable('categories') }) .createTable('subcategories', function(table) { table.uuid('id').primary().defaultTo(knex.raw(`gen_random_uuid()`)); table.string('name').notNullable(); table.uuid('category_id').references('id').inTable('categories').onDelete('CASCADE'); table.timestamps(true, true); }) .createTable('place_subcategories', function(table) { table.uuid('place_id').references('id').inTable('places').onDelete('CASCADE'); table.uuid('subcategory_id').references('id').inTable('subcategories').onDelete('CASCADE'); }) }; /** * @param { import("knex").Knex } knex * @returns { Promise } */ exports.down = function(knex) { knex.schema.alterTable('places', function(table) { table.dropColumn('category_id'); }); knex.schema.dropTable('categories'); knex.schema.dropTable('subcategories'); knex.schema.dropTable('place_subcategories'); };