Table recipes {
  id uuid [pk, default: `gen_random_uuid()`]
  name text [not null]
  cuisine text
  prep_time_minutes int
  cook_time_minutes int
  servings int
  ingredients jsonb [not null, default: `'[]'`]
  instructions jsonb [not null, default: `'[]'`]
  tags "text[]" [not null, default: `'{}'`]
  rating int
  notes text
  created_at timestamptz [not null, default: `now()`]
  updated_at timestamptz [not null, default: `now()`]

  indexes {
    cuisine
    tags
  }
}

Table meal_plans {
  id uuid [pk, default: `gen_random_uuid()`]
  week_start date [not null]
  day_of_week text [not null]
  meal_type text [not null]
  recipe_id uuid [ref: > recipes.id]
  custom_meal text
  servings int
  notes text
  created_at timestamptz [not null, default: `now()`]

  indexes {
    week_start
  }
}

Table shopping_lists {
  id uuid [pk, default: `gen_random_uuid()`]
  week_start date [unique, not null]
  items jsonb [not null, default: `'[]'`]
  notes text
  created_at timestamptz [not null, default: `now()`]
  updated_at timestamptz [not null, default: `now()`]

  indexes {
    week_start
  }
}
