39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
/**
|
|
* @param { import("knex").Knex } knex
|
|
* @returns { Promise<void> }
|
|
*/
|
|
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<void> }
|
|
*/
|
|
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');
|
|
};
|