From c8d58db08a2f2e73a26702ebe4a748389ee98f9d Mon Sep 17 00:00:00 2001 From: fred <> Date: Tue, 8 Jul 2025 15:29:37 -0700 Subject: [PATCH] db tables --- ...20250708205938_create_ingredients_table.js | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 backend/migrations/20250708205938_create_ingredients_table.js diff --git a/backend/migrations/20250708205938_create_ingredients_table.js b/backend/migrations/20250708205938_create_ingredients_table.js new file mode 100644 index 0000000..5a24465 --- /dev/null +++ b/backend/migrations/20250708205938_create_ingredients_table.js @@ -0,0 +1,43 @@ +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = function (knex) { + return knex.schema.createTable('ingredients', function (table) { + table.increments('id').primary(); + table.string('name').notNullable().unique(); + table.string('type'); + table.string('notes'); + table.timestamps(true, true); + }). + createTable('recipe_ingredients', function (table) { + table.increments('id').primary(); + table.integer('recipe_id').notNullable(); + table.integer('ingredient_id').notNullable(); + table.string('quantity').notNullable(); + table.string('unit').notNullable(); + table.string('notes'); + table.index(['recipe_id']); + table.index(['ingredient_id']); + table.timestamps(true, true); + }). + createTable('recipe_steps', function (table) { + table.increments('id').primary(); + table.integer('recipe_id'); + table.integer('step_number'); + table.string('instructions'); + table.unique(['recipe_id', 'step_number']); + table.index(['recipe_id']) + table.timestamps(true, true); + }) +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = function (knex) { + return knex.schema.dropTableIfExists('ingredients') + .dropTableIfExists('recipe_ingredients') + .dropTableIfExists('recipe_steps') +};