kahvi.juustodiilerit.fi/backend/migrations/20251223131938_initialize_db.ts

53 lines
1.5 KiB
TypeScript

import type { Knex } from "knex";
export async function up(knex: Knex): Promise<void> {
await knex.schema.createTable('coffee', (table) => {
table.uuid('id').primary().defaultTo(knex.fn.uuid())
table.uuid('user_id')
table.string('name')
table.integer('roast_level')
table.string('notes')
})
await knex.schema.createTable('grinder', (table) => {
table.uuid('id').primary().defaultTo(knex.fn.uuid())
table.uuid('user_id')
table.string('name')
table.string('notes')
})
await knex.schema.createTable('brewer', (table) => {
table.uuid('id').primary().defaultTo(knex.fn.uuid())
table.uuid('user_id')
table.string('name')
table.string('notes')
})
await knex.schema.createTable('method', (table) => {
table.uuid('id').primary().defaultTo(knex.fn.uuid())
table.uuid('user_id')
table.uuid('coffee_id')
table.foreign('coffee_id').references('coffee.id')
table.integer('coffee_amount_g')
table.uuid('grinder_id')
table.foreign('grinder_id').references('grinder.id')
table.string('grind_setting')
table.uuid('brewer_id')
table.foreign('brewer_id').references('brewer.id')
table.integer('water_amount_ml')
table.integer('water_temperature_c')
table.integer('blooming_time_sec')
table.integer('brewing_time_sec')
table.string('notes')
})
}
export async function down(knex: Knex): Promise<void> {
await knex.schema.dropTable('method')
await knex.schema.dropTable('coffee')
await knex.schema.dropTable('grinder')
await knex.schema.dropTable('brewer')
}