53 lines
1.5 KiB
TypeScript
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')
|
|
}
|
|
|