{
  "id": "919ee577-5c3b-4b3f-bd3d-a9fc05b90bb8",
  "prevId": "f3cb133e-5170-4c78-a76a-2c8f649cfb6b",
  "version": "7",
  "dialect": "postgresql",
  "tables": {
    "public.admin_totp": {
      "name": "admin_totp",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "secret_base32": {
          "name": "secret_base32",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "enabled_at": {
          "name": "enabled_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "last_used_step": {
          "name": "last_used_step",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "admin_totp_user_id_users_id_fk": {
          "name": "admin_totp_user_id_users_id_fk",
          "tableFrom": "admin_totp",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.email_verification_tokens": {
      "name": "email_verification_tokens",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "token_hash": {
          "name": "token_hash",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "expires_at": {
          "name": "expires_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true
        },
        "used_at": {
          "name": "used_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "email_verification_tokens_user_idx": {
          "name": "email_verification_tokens_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "email_verification_tokens_hash_unique": {
          "name": "email_verification_tokens_hash_unique",
          "columns": [
            {
              "expression": "token_hash",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "email_verification_tokens_user_id_users_id_fk": {
          "name": "email_verification_tokens_user_id_users_id_fk",
          "tableFrom": "email_verification_tokens",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.password_reset_tokens": {
      "name": "password_reset_tokens",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "token_hash": {
          "name": "token_hash",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "expires_at": {
          "name": "expires_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true
        },
        "used_at": {
          "name": "used_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "password_reset_tokens_user_idx": {
          "name": "password_reset_tokens_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "password_reset_tokens_hash_unique": {
          "name": "password_reset_tokens_hash_unique",
          "columns": [
            {
              "expression": "token_hash",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "password_reset_tokens_user_id_users_id_fk": {
          "name": "password_reset_tokens_user_id_users_id_fk",
          "tableFrom": "password_reset_tokens",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.refresh_tokens": {
      "name": "refresh_tokens",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "token_hash": {
          "name": "token_hash",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "family_id": {
          "name": "family_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "expires_at": {
          "name": "expires_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true
        },
        "revoked_at": {
          "name": "revoked_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "replaced_by_token_id": {
          "name": "replaced_by_token_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "user_agent": {
          "name": "user_agent",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "ip": {
          "name": "ip",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "refresh_tokens_user_idx": {
          "name": "refresh_tokens_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "refresh_tokens_hash_unique": {
          "name": "refresh_tokens_hash_unique",
          "columns": [
            {
              "expression": "token_hash",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "refresh_tokens_user_id_users_id_fk": {
          "name": "refresh_tokens_user_id_users_id_fk",
          "tableFrom": "refresh_tokens",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.user_consents": {
      "name": "user_consents",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "kind": {
          "name": "kind",
          "type": "consent_kind",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "status": {
          "name": "status",
          "type": "consent_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "granted_at": {
          "name": "granted_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "revoked_at": {
          "name": "revoked_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "user_consents_user_id_users_id_fk": {
          "name": "user_consents_user_id_users_id_fk",
          "tableFrom": "user_consents",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "user_consents_user_id_kind_pk": {
          "name": "user_consents_user_id_kind_pk",
          "columns": [
            "user_id",
            "kind"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.user_credentials": {
      "name": "user_credentials",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "password_hash": {
          "name": "password_hash",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "password_updated_at": {
          "name": "password_updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "user_credentials_user_id_users_id_fk": {
          "name": "user_credentials_user_id_users_id_fk",
          "tableFrom": "user_credentials",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.user_health_profiles": {
      "name": "user_health_profiles",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "birth_year": {
          "name": "birth_year",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "sex": {
          "name": "sex",
          "type": "sex",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": false
        },
        "height_cm": {
          "name": "height_cm",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "weight_kg": {
          "name": "weight_kg",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "target_weight_kg": {
          "name": "target_weight_kg",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "activity_level": {
          "name": "activity_level",
          "type": "activity_level",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'moderate'"
        },
        "training_sessions_per_week": {
          "name": "training_sessions_per_week",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "training_types": {
          "name": "training_types",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "user_health_profiles_user_id_users_id_fk": {
          "name": "user_health_profiles_user_id_users_id_fk",
          "tableFrom": "user_health_profiles",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.user_preferences": {
      "name": "user_preferences",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "primary_goal": {
          "name": "primary_goal",
          "type": "goal_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": false
        },
        "goals": {
          "name": "goals",
          "type": "goal_type[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "diet_pattern": {
          "name": "diet_pattern",
          "type": "diet_pattern",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'omnivore'"
        },
        "religious_rule": {
          "name": "religious_rule",
          "type": "religious_rule",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'none'"
        },
        "allergens": {
          "name": "allergens",
          "type": "allergen[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "intolerances": {
          "name": "intolerances",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "avoid_ingredient_ids": {
          "name": "avoid_ingredient_ids",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "favorite_cuisines": {
          "name": "favorite_cuisines",
          "type": "cuisine[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "disliked_dishes": {
          "name": "disliked_dishes",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "spice_level_max": {
          "name": "spice_level_max",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 3
        },
        "weekly_budget_minor": {
          "name": "weekly_budget_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "max_cooking_minutes_weekday": {
          "name": "max_cooking_minutes_weekday",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "equipment": {
          "name": "equipment",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "default_portions": {
          "name": "default_portions",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 2
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "user_preferences_user_id_users_id_fk": {
          "name": "user_preferences_user_id_users_id_fk",
          "tableFrom": "user_preferences",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.users": {
      "name": "users",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "email": {
          "name": "email",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "email_verified_at": {
          "name": "email_verified_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "display_name": {
          "name": "display_name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "role": {
          "name": "role",
          "type": "user_role",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'user'"
        },
        "locale": {
          "name": "locale",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'sv-SE'"
        },
        "precision_mode": {
          "name": "precision_mode",
          "type": "precision_mode",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'simple'"
        },
        "onboarding_completed": {
          "name": "onboarding_completed",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "onboarding_step": {
          "name": "onboarding_step",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'a'"
        },
        "deleted_at": {
          "name": "deleted_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "users_email_unique": {
          "name": "users_email_unique",
          "columns": [
            {
              "expression": "email",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.gdpr_retention_pseudonyms": {
      "name": "gdpr_retention_pseudonyms",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "pseudonym": {
          "name": "pseudonym",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "retention_until": {
          "name": "retention_until",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "deleted_at": {
          "name": "deleted_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {},
      "foreignKeys": {
        "gdpr_retention_pseudonyms_user_id_users_id_fk": {
          "name": "gdpr_retention_pseudonyms_user_id_users_id_fk",
          "tableFrom": "gdpr_retention_pseudonyms",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {
        "gdpr_retention_pseudonyms_user_id_unique": {
          "name": "gdpr_retention_pseudonyms_user_id_unique",
          "nullsNotDistinct": false,
          "columns": [
            "user_id"
          ]
        },
        "gdpr_retention_pseudonyms_pseudonym_unique": {
          "name": "gdpr_retention_pseudonyms_pseudonym_unique",
          "nullsNotDistinct": false,
          "columns": [
            "pseudonym"
          ]
        }
      },
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.user_locale_preferences": {
      "name": "user_locale_preferences",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "language_tag": {
          "name": "language_tag",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'sv-SE'"
        },
        "region_code": {
          "name": "region_code",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'SE'"
        },
        "time_zone": {
          "name": "time_zone",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'Europe/Stockholm'"
        },
        "measurement_system": {
          "name": "measurement_system",
          "type": "measurement_system",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'METRIC'"
        },
        "temperature_unit": {
          "name": "temperature_unit",
          "type": "temperature_unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'CELSIUS'"
        },
        "currency_code": {
          "name": "currency_code",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'SEK'"
        },
        "first_day_of_week": {
          "name": "first_day_of_week",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "use_24_hour_time": {
          "name": "use_24_hour_time",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": true
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "user_locale_preferences_user_id_users_id_fk": {
          "name": "user_locale_preferences_user_id_users_id_fk",
          "tableFrom": "user_locale_preferences",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.household_members": {
      "name": "household_members",
      "schema": "",
      "columns": {
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "role": {
          "name": "role",
          "type": "household_role",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'member'"
        },
        "portion_factor": {
          "name": "portion_factor",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "joined_at": {
          "name": "joined_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "household_members_user_idx": {
          "name": "household_members_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "household_members_household_id_households_id_fk": {
          "name": "household_members_household_id_households_id_fk",
          "tableFrom": "household_members",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "household_members_user_id_users_id_fk": {
          "name": "household_members_user_id_users_id_fk",
          "tableFrom": "household_members",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "household_members_household_id_user_id_pk": {
          "name": "household_members_household_id_user_id_pk",
          "columns": [
            "household_id",
            "user_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.households": {
      "name": "households",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "invite_code": {
          "name": "invite_code",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "weekly_budget_minor": {
          "name": "weekly_budget_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "first_scan_completed_at": {
          "name": "first_scan_completed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "fifth_item_confirmed_at": {
          "name": "fifth_item_confirmed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "first_recipe_recommendation_viewed_at": {
          "name": "first_recipe_recommendation_viewed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "first_recipe_saved_or_started_at": {
          "name": "first_recipe_saved_or_started_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "activated_at": {
          "name": "activated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "first_cooking_session_completed_at": {
          "name": "first_cooking_session_completed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "inventory_updated_after_cooking_at": {
          "name": "inventory_updated_after_cooking_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "value_confirmed_at": {
          "name": "value_confirmed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "size": {
          "name": "size",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "currency_code": {
          "name": "currency_code",
          "type": "varchar(3)",
          "primaryKey": false,
          "notNull": true,
          "default": "'SEK'"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "households_invite_code_unique": {
          "name": "households_invite_code_unique",
          "columns": [
            {
              "expression": "invite_code",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.storage_locations": {
      "name": "storage_locations",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "type": {
          "name": "type",
          "type": "storage_location_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "sublocations": {
          "name": "sublocations",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "sort_order": {
          "name": "sort_order",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "storage_locations_household_idx": {
          "name": "storage_locations_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "storage_locations_household_id_households_id_fk": {
          "name": "storage_locations_household_id_households_id_fk",
          "tableFrom": "storage_locations",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.canonical_ingredients": {
      "name": "canonical_ingredients",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "text",
          "primaryKey": true,
          "notNull": true
        },
        "name_sv": {
          "name": "name_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "name_en": {
          "name": "name_en",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "aliases": {
          "name": "aliases",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "category": {
          "name": "category",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "default_unit": {
          "name": "default_unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "density_g_per_ml": {
          "name": "density_g_per_ml",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "grams_per_piece": {
          "name": "grams_per_piece",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "allergens": {
          "name": "allergens",
          "type": "allergen[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "is_vegan": {
          "name": "is_vegan",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "is_vegetarian": {
          "name": "is_vegetarian",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "contains_gluten": {
          "name": "contains_gluten",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "contains_lactose": {
          "name": "contains_lactose",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "is_pork": {
          "name": "is_pork",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "is_beef": {
          "name": "is_beef",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "is_alcohol": {
          "name": "is_alcohol",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "nutrition_per_100": {
          "name": "nutrition_per_100",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "nutrition_provenance": {
          "name": "nutrition_provenance",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "peak_seasons": {
          "name": "peak_seasons",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "shelf_life_guidance": {
          "name": "shelf_life_guidance",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "default_price_minor_per_kg": {
          "name": "default_price_minor_per_kg",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "canonical_ingredients_category_idx": {
          "name": "canonical_ingredients_category_idx",
          "columns": [
            {
              "expression": "category",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.substitutions": {
      "name": "substitutions",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "text",
          "primaryKey": true,
          "notNull": true
        },
        "from_ingredient_id": {
          "name": "from_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "to_ingredient_id": {
          "name": "to_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "ratio": {
          "name": "ratio",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "instructions_sv": {
          "name": "instructions_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "best_for": {
          "name": "best_for",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "not_recommended_for": {
          "name": "not_recommended_for",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "flavor_impact_sv": {
          "name": "flavor_impact_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "texture_impact_sv": {
          "name": "texture_impact_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "priority": {
          "name": "priority",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        }
      },
      "indexes": {
        "substitutions_from_idx": {
          "name": "substitutions_from_idx",
          "columns": [
            {
              "expression": "from_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "substitutions_pair_unique": {
          "name": "substitutions_pair_unique",
          "columns": [
            {
              "expression": "from_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "to_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "substitutions_from_ingredient_id_canonical_ingredients_id_fk": {
          "name": "substitutions_from_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "substitutions",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "from_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "substitutions_to_ingredient_id_canonical_ingredients_id_fk": {
          "name": "substitutions_to_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "substitutions",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "to_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.products": {
      "name": "products",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "gtin": {
          "name": "gtin",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "brand": {
          "name": "brand",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "package_size_value": {
          "name": "package_size_value",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "package_size_unit": {
          "name": "package_size_unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": false
        },
        "ingredients_text": {
          "name": "ingredients_text",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "allergens": {
          "name": "allergens",
          "type": "allergen[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "may_contain_allergens": {
          "name": "may_contain_allergens",
          "type": "allergen[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "nutrition": {
          "name": "nutrition",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "image_urls": {
          "name": "image_urls",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "language": {
          "name": "language",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'sv'"
        },
        "market": {
          "name": "market",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'SE'"
        },
        "data_source": {
          "name": "data_source",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "verification_status": {
          "name": "verification_status",
          "type": "verification_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'unverified'"
        },
        "version": {
          "name": "version",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "valid_from": {
          "name": "valid_from",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "valid_to": {
          "name": "valid_to",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_by_user_id": {
          "name": "created_by_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "products_gtin_version_unique": {
          "name": "products_gtin_version_unique",
          "columns": [
            {
              "expression": "gtin",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "version",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "where": "\"products\".\"gtin\" IS NOT NULL",
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "products_gtin_current_idx": {
          "name": "products_gtin_current_idx",
          "columns": [
            {
              "expression": "gtin",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "where": "\"products\".\"valid_to\" IS NULL",
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "products_canonical_idx": {
          "name": "products_canonical_idx",
          "columns": [
            {
              "expression": "canonical_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "products_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "products_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "products",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.inventory_conflicts": {
      "name": "inventory_conflicts",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "inventory_item_id": {
          "name": "inventory_item_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "scan_job_id": {
          "name": "scan_job_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "conflict_type": {
          "name": "conflict_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "source_a": {
          "name": "source_a",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "source_a_priority": {
          "name": "source_a_priority",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "source_b": {
          "name": "source_b",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "source_b_priority": {
          "name": "source_b_priority",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "payload_a": {
          "name": "payload_a",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "payload_b": {
          "name": "payload_b",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "proposed_resolution": {
          "name": "proposed_resolution",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'open'"
        },
        "resolved_by_user_id": {
          "name": "resolved_by_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "resolution": {
          "name": "resolution",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "model_version": {
          "name": "model_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "prompt_version": {
          "name": "prompt_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "resolved_at": {
          "name": "resolved_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {
        "inventory_conflicts_household_idx": {
          "name": "inventory_conflicts_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_conflicts_item_idx": {
          "name": "inventory_conflicts_item_idx",
          "columns": [
            {
              "expression": "inventory_item_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_conflicts_status_idx": {
          "name": "inventory_conflicts_status_idx",
          "columns": [
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "inventory_conflicts_household_id_households_id_fk": {
          "name": "inventory_conflicts_household_id_households_id_fk",
          "tableFrom": "inventory_conflicts",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "inventory_conflicts_inventory_item_id_inventory_items_id_fk": {
          "name": "inventory_conflicts_inventory_item_id_inventory_items_id_fk",
          "tableFrom": "inventory_conflicts",
          "tableTo": "inventory_items",
          "columnsFrom": [
            "inventory_item_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "inventory_conflicts_resolved_by_user_id_users_id_fk": {
          "name": "inventory_conflicts_resolved_by_user_id_users_id_fk",
          "tableFrom": "inventory_conflicts",
          "tableTo": "users",
          "columnsFrom": [
            "resolved_by_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.inventory_items": {
      "name": "inventory_items",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "product_id": {
          "name": "product_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "display_name": {
          "name": "display_name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "brand": {
          "name": "brand",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "quantity": {
          "name": "quantity",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "unit": {
          "name": "unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "storage_location_id": {
          "name": "storage_location_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "sublocation": {
          "name": "sublocation",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "purchased_at": {
          "name": "purchased_at",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "opened_at": {
          "name": "opened_at",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "best_before_date": {
          "name": "best_before_date",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "use_by_date": {
          "name": "use_by_date",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "date_kind": {
          "name": "date_kind",
          "type": "date_kind",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": false
        },
        "frozen_at": {
          "name": "frozen_at",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "thawed_at": {
          "name": "thawed_at",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "price_minor": {
          "name": "price_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "nutrition_per_100": {
          "name": "nutrition_per_100",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "source": {
          "name": "source",
          "type": "inventory_source",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "confidence": {
          "name": "confidence",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "verified_by_user": {
          "name": "verified_by_user",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "last_verified_at": {
          "name": "last_verified_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "expiry_status": {
          "name": "expiry_status",
          "type": "expiry_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'unknown'"
        },
        "trust_state": {
          "name": "trust_state",
          "type": "varchar(16)",
          "primaryKey": false,
          "notNull": true,
          "default": "'unverified'"
        },
        "depleted_at": {
          "name": "depleted_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "model_version": {
          "name": "model_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "prompt_version": {
          "name": "prompt_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "inventory_items_household_idx": {
          "name": "inventory_items_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_items_household_bb_idx": {
          "name": "inventory_items_household_bb_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "best_before_date",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_items_location_idx": {
          "name": "inventory_items_location_idx",
          "columns": [
            {
              "expression": "storage_location_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_items_canonical_idx": {
          "name": "inventory_items_canonical_idx",
          "columns": [
            {
              "expression": "canonical_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "inventory_items_household_id_households_id_fk": {
          "name": "inventory_items_household_id_households_id_fk",
          "tableFrom": "inventory_items",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "inventory_items_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "inventory_items_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "inventory_items",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "inventory_items_product_id_products_id_fk": {
          "name": "inventory_items_product_id_products_id_fk",
          "tableFrom": "inventory_items",
          "tableTo": "products",
          "columnsFrom": [
            "product_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "inventory_items_storage_location_id_storage_locations_id_fk": {
          "name": "inventory_items_storage_location_id_storage_locations_id_fk",
          "tableFrom": "inventory_items",
          "tableTo": "storage_locations",
          "columnsFrom": [
            "storage_location_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.inventory_transactions": {
      "name": "inventory_transactions",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "inventory_item_id": {
          "name": "inventory_item_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "type": {
          "name": "type",
          "type": "inventory_transaction_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "quantity_delta": {
          "name": "quantity_delta",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true
        },
        "unit": {
          "name": "unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "ref_type": {
          "name": "ref_type",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "ref_id": {
          "name": "ref_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "cooking_session_id": {
          "name": "cooking_session_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "actor_user_id": {
          "name": "actor_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "note": {
          "name": "note",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "value_minor": {
          "name": "value_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "inventory_tx_item_idx": {
          "name": "inventory_tx_item_idx",
          "columns": [
            {
              "expression": "inventory_item_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_tx_household_time_idx": {
          "name": "inventory_tx_household_time_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "inventory_tx_type_idx": {
          "name": "inventory_tx_type_idx",
          "columns": [
            {
              "expression": "type",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "inventory_transactions_household_id_households_id_fk": {
          "name": "inventory_transactions_household_id_households_id_fk",
          "tableFrom": "inventory_transactions",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "inventory_transactions_inventory_item_id_inventory_items_id_fk": {
          "name": "inventory_transactions_inventory_item_id_inventory_items_id_fk",
          "tableFrom": "inventory_transactions",
          "tableTo": "inventory_items",
          "columnsFrom": [
            "inventory_item_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "inventory_transactions_cooking_session_id_cooking_sessions_id_fk": {
          "name": "inventory_transactions_cooking_session_id_cooking_sessions_id_fk",
          "tableFrom": "inventory_transactions",
          "tableTo": "cooking_sessions",
          "columnsFrom": [
            "cooking_session_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "inventory_transactions_actor_user_id_users_id_fk": {
          "name": "inventory_transactions_actor_user_id_users_id_fk",
          "tableFrom": "inventory_transactions",
          "tableTo": "users",
          "columnsFrom": [
            "actor_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.inventory_decay_profiles": {
      "name": "inventory_decay_profiles",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "name": {
          "name": "name",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": true
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "half_life_days": {
          "name": "half_life_days",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 7
        },
        "stale_after_days": {
          "name": "stale_after_days",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 30
        },
        "active": {
          "name": "active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {
        "inventory_decay_profiles_name_unique": {
          "name": "inventory_decay_profiles_name_unique",
          "nullsNotDistinct": false,
          "columns": [
            "name"
          ]
        }
      },
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.inventory_item_decay_profile": {
      "name": "inventory_item_decay_profile",
      "schema": "",
      "columns": {
        "inventory_item_id": {
          "name": "inventory_item_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "decay_profile_id": {
          "name": "decay_profile_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        }
      },
      "indexes": {},
      "foreignKeys": {
        "inventory_item_decay_profile_inventory_item_id_inventory_items_id_fk": {
          "name": "inventory_item_decay_profile_inventory_item_id_inventory_items_id_fk",
          "tableFrom": "inventory_item_decay_profile",
          "tableTo": "inventory_items",
          "columnsFrom": [
            "inventory_item_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "inventory_item_decay_profile_decay_profile_id_inventory_decay_profiles_id_fk": {
          "name": "inventory_item_decay_profile_decay_profile_id_inventory_decay_profiles_id_fk",
          "tableFrom": "inventory_item_decay_profile",
          "tableTo": "inventory_decay_profiles",
          "columnsFrom": [
            "decay_profile_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.cooking_assumption_profiles": {
      "name": "cooking_assumption_profiles",
      "schema": "",
      "columns": {
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "average_eaten_portions": {
          "name": "average_eaten_portions",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "average_leftover_portions": {
          "name": "average_leftover_portions",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "observation_count": {
          "name": "observation_count",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "last_session_answers": {
          "name": "last_session_answers",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "cooking_assumption_profiles_household_idx": {
          "name": "cooking_assumption_profiles_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "cooking_assumption_profiles_household_id_households_id_fk": {
          "name": "cooking_assumption_profiles_household_id_households_id_fk",
          "tableFrom": "cooking_assumption_profiles",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "cooking_assumption_profiles_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "cooking_assumption_profiles_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "cooking_assumption_profiles",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "cooking_assumption_profiles_household_id_canonical_ingredient_id_pk": {
          "name": "cooking_assumption_profiles_household_id_canonical_ingredient_id_pk",
          "columns": [
            "household_id",
            "canonical_ingredient_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.cooking_sessions": {
      "name": "cooking_sessions",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "started_by_user_id": {
          "name": "started_by_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'planned'"
        },
        "planned_portions": {
          "name": "planned_portions",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "planned_meal_type": {
          "name": "planned_meal_type",
          "type": "meal_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'dinner'"
        },
        "actual_portions_eaten": {
          "name": "actual_portions_eaten",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "leftover_estimate_portions": {
          "name": "leftover_estimate_portions",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "meal_date": {
          "name": "meal_date",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "meal_box_mutations": {
          "name": "meal_box_mutations",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "leftover_note": {
          "name": "leftover_note",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "planned_deductions": {
          "name": "planned_deductions",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "started_at": {
          "name": "started_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "completed_at": {
          "name": "completed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "cancelled_at": {
          "name": "cancelled_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "cancel_reason": {
          "name": "cancel_reason",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "cooking_sessions_household_status_idx": {
          "name": "cooking_sessions_household_status_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "cooking_sessions_recipe_idx": {
          "name": "cooking_sessions_recipe_idx",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "cooking_sessions_timeout_idx": {
          "name": "cooking_sessions_timeout_idx",
          "columns": [
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "started_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "cooking_sessions_recipe_id_recipes_id_fk": {
          "name": "cooking_sessions_recipe_id_recipes_id_fk",
          "tableFrom": "cooking_sessions",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "cooking_sessions_household_id_households_id_fk": {
          "name": "cooking_sessions_household_id_households_id_fk",
          "tableFrom": "cooking_sessions",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "cooking_sessions_started_by_user_id_users_id_fk": {
          "name": "cooking_sessions_started_by_user_id_users_id_fk",
          "tableFrom": "cooking_sessions",
          "tableTo": "users",
          "columnsFrom": [
            "started_by_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_cooks": {
      "name": "recipe_cooks",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "cooking_session_id": {
          "name": "cooking_session_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "portions_cooked": {
          "name": "portions_cooked",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "cooked_at": {
          "name": "cooked_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "recipe_cooks_recipe_idx": {
          "name": "recipe_cooks_recipe_idx",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipe_cooks_user_idx": {
          "name": "recipe_cooks_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipe_cooks_session_idx": {
          "name": "recipe_cooks_session_idx",
          "columns": [
            {
              "expression": "cooking_session_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_cooks_recipe_id_recipes_id_fk": {
          "name": "recipe_cooks_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_cooks",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "recipe_cooks_user_id_users_id_fk": {
          "name": "recipe_cooks_user_id_users_id_fk",
          "tableFrom": "recipe_cooks",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "recipe_cooks_cooking_session_id_cooking_sessions_id_fk": {
          "name": "recipe_cooks_cooking_session_id_cooking_sessions_id_fk",
          "tableFrom": "recipe_cooks",
          "tableTo": "cooking_sessions",
          "columnsFrom": [
            "cooking_session_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_favorites": {
      "name": "recipe_favorites",
      "schema": "",
      "columns": {
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "recipe_favorites_user_idx": {
          "name": "recipe_favorites_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_favorites_recipe_id_recipes_id_fk": {
          "name": "recipe_favorites_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_favorites",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "recipe_favorites_user_id_users_id_fk": {
          "name": "recipe_favorites_user_id_users_id_fk",
          "tableFrom": "recipe_favorites",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "recipe_favorites_recipe_id_user_id_pk": {
          "name": "recipe_favorites_recipe_id_user_id_pk",
          "columns": [
            "recipe_id",
            "user_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_ingredients": {
      "name": "recipe_ingredients",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "display_name_sv": {
          "name": "display_name_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "quantity": {
          "name": "quantity",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true
        },
        "unit": {
          "name": "unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "note": {
          "name": "note",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "optional": {
          "name": "optional",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "group_name": {
          "name": "group_name",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "sort_order": {
          "name": "sort_order",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        }
      },
      "indexes": {
        "recipe_ingredients_recipe_idx": {
          "name": "recipe_ingredients_recipe_idx",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipe_ingredients_canonical_idx": {
          "name": "recipe_ingredients_canonical_idx",
          "columns": [
            {
              "expression": "canonical_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_ingredients_recipe_id_recipes_id_fk": {
          "name": "recipe_ingredients_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_ingredients",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "recipe_ingredients_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "recipe_ingredients_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "recipe_ingredients",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_ratings": {
      "name": "recipe_ratings",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "stars": {
          "name": "stars",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "feedback_tags": {
          "name": "feedback_tags",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "comment": {
          "name": "comment",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "recipe_ratings_user_recipe_unique": {
          "name": "recipe_ratings_user_recipe_unique",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipe_ratings_recipe_idx": {
          "name": "recipe_ratings_recipe_idx",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_ratings_recipe_id_recipes_id_fk": {
          "name": "recipe_ratings_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_ratings",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "recipe_ratings_user_id_users_id_fk": {
          "name": "recipe_ratings_user_id_users_id_fk",
          "tableFrom": "recipe_ratings",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_similarities": {
      "name": "recipe_similarities",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_a_id": {
          "name": "recipe_a_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "recipe_b_id": {
          "name": "recipe_b_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "similarity_score": {
          "name": "similarity_score",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true
        },
        "classification": {
          "name": "classification",
          "type": "recipe_similarity_class",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "details": {
          "name": "details",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "recipe_similarities_pair_unique": {
          "name": "recipe_similarities_pair_unique",
          "columns": [
            {
              "expression": "recipe_a_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "recipe_b_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_similarities_recipe_a_id_recipes_id_fk": {
          "name": "recipe_similarities_recipe_a_id_recipes_id_fk",
          "tableFrom": "recipe_similarities",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_a_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "recipe_similarities_recipe_b_id_recipes_id_fk": {
          "name": "recipe_similarities_recipe_b_id_recipes_id_fk",
          "tableFrom": "recipe_similarities",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_b_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_source_registry": {
      "name": "recipe_source_registry",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "source_name": {
          "name": "source_name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "license": {
          "name": "license",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "right_to_store": {
          "name": "right_to_store",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true
        },
        "right_to_modify": {
          "name": "right_to_modify",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true
        },
        "right_to_display": {
          "name": "right_to_display",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true
        },
        "attribution_required": {
          "name": "attribution_required",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "attribution_text": {
          "name": "attribution_text",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "commercial_use": {
          "name": "commercial_use",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true
        },
        "valid_from": {
          "name": "valid_from",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "valid_to": {
          "name": "valid_to",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "notes": {
          "name": "notes",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_steps": {
      "name": "recipe_steps",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "step_number": {
          "name": "step_number",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "instruction_sv": {
          "name": "instruction_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "timer_seconds": {
          "name": "timer_seconds",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "temperature_c": {
          "name": "temperature_c",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "tip": {
          "name": "tip",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {
        "recipe_steps_recipe_idx": {
          "name": "recipe_steps_recipe_idx",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipe_steps_recipe_step_unique": {
          "name": "recipe_steps_recipe_step_unique",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "step_number",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_steps_recipe_id_recipes_id_fk": {
          "name": "recipe_steps_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_steps",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipes": {
      "name": "recipes",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "slug": {
          "name": "slug",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "title_sv": {
          "name": "title_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "description_sv": {
          "name": "description_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "''"
        },
        "country": {
          "name": "country",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "region": {
          "name": "region",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "cuisine": {
          "name": "cuisine",
          "type": "cuisine",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "meal_types": {
          "name": "meal_types",
          "type": "meal_type[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "tags": {
          "name": "tags",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "methods": {
          "name": "methods",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "equipment": {
          "name": "equipment",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "difficulty": {
          "name": "difficulty",
          "type": "recipe_difficulty",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'easy'"
        },
        "prep_time_minutes": {
          "name": "prep_time_minutes",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "cook_time_minutes": {
          "name": "cook_time_minutes",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "total_time_minutes": {
          "name": "total_time_minutes",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "portions": {
          "name": "portions",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 4
        },
        "nutrition_per_portion": {
          "name": "nutrition_per_portion",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "allergens": {
          "name": "allergens",
          "type": "allergen[]",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "spice_level": {
          "name": "spice_level",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "estimated_cost_minor_per_portion": {
          "name": "estimated_cost_minor_per_portion",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "storage_guidance_sv": {
          "name": "storage_guidance_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "meal_prep_friendly": {
          "name": "meal_prep_friendly",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "freezer_friendly": {
          "name": "freezer_friendly",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "peak_seasons": {
          "name": "peak_seasons",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "holiday_tags": {
          "name": "holiday_tags",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "dna": {
          "name": "dna",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "variant_type": {
          "name": "variant_type",
          "type": "recipe_variant_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'standard'"
        },
        "variant_of_recipe_id": {
          "name": "variant_of_recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "forked_from_recipe_id": {
          "name": "forked_from_recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "recipe_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'draft'"
        },
        "verification_status": {
          "name": "verification_status",
          "type": "recipe_verification_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'unverified'"
        },
        "source_type": {
          "name": "source_type",
          "type": "recipe_source_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "source_registry_id": {
          "name": "source_registry_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "creator_user_id": {
          "name": "creator_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "creator_display_name": {
          "name": "creator_display_name",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "image_urls": {
          "name": "image_urls",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "version": {
          "name": "version",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "rating_average": {
          "name": "rating_average",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "rating_count": {
          "name": "rating_count",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "cook_count": {
          "name": "cook_count",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "favorite_count": {
          "name": "favorite_count",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "moderation_note": {
          "name": "moderation_note",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "recipes_slug_unique": {
          "name": "recipes_slug_unique",
          "columns": [
            {
              "expression": "slug",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipes_status_idx": {
          "name": "recipes_status_idx",
          "columns": [
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipes_cuisine_idx": {
          "name": "recipes_cuisine_idx",
          "columns": [
            {
              "expression": "cuisine",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipes_variant_of_idx": {
          "name": "recipes_variant_of_idx",
          "columns": [
            {
              "expression": "variant_of_recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipes_creator_idx": {
          "name": "recipes_creator_idx",
          "columns": [
            {
              "expression": "creator_user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipes_total_time_idx": {
          "name": "recipes_total_time_idx",
          "columns": [
            {
              "expression": "total_time_minutes",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipes_source_registry_id_recipe_source_registry_id_fk": {
          "name": "recipes_source_registry_id_recipe_source_registry_id_fk",
          "tableFrom": "recipes",
          "tableTo": "recipe_source_registry",
          "columnsFrom": [
            "source_registry_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "recipes_creator_user_id_users_id_fk": {
          "name": "recipes_creator_user_id_users_id_fk",
          "tableFrom": "recipes",
          "tableTo": "users",
          "columnsFrom": [
            "creator_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ingredient_translations": {
      "name": "ingredient_translations",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "ingredient_id": {
          "name": "ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "language_tag": {
          "name": "language_tag",
          "type": "varchar(35)",
          "primaryKey": false,
          "notNull": true
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "aliases": {
          "name": "aliases",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "source": {
          "name": "source",
          "type": "translation_source",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'seed'"
        },
        "status": {
          "name": "status",
          "type": "translation_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'published'"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "ingredient_translations_unique": {
          "name": "ingredient_translations_unique",
          "columns": [
            {
              "expression": "ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "language_tag",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "ingredient_translations_lang_idx": {
          "name": "ingredient_translations_lang_idx",
          "columns": [
            {
              "expression": "language_tag",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "ingredient_translations_ingredient_id_canonical_ingredients_id_fk": {
          "name": "ingredient_translations_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "ingredient_translations",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_step_translations": {
      "name": "recipe_step_translations",
      "schema": "",
      "columns": {
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "language_tag": {
          "name": "language_tag",
          "type": "varchar(35)",
          "primaryKey": false,
          "notNull": true
        },
        "step_number": {
          "name": "step_number",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "instruction": {
          "name": "instruction",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "tip": {
          "name": "tip",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {},
      "foreignKeys": {
        "recipe_step_translations_recipe_id_recipes_id_fk": {
          "name": "recipe_step_translations_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_step_translations",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "recipe_step_translations_recipe_id_language_tag_step_number_pk": {
          "name": "recipe_step_translations_recipe_id_language_tag_step_number_pk",
          "columns": [
            "recipe_id",
            "language_tag",
            "step_number"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.recipe_translations": {
      "name": "recipe_translations",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "language_tag": {
          "name": "language_tag",
          "type": "varchar(35)",
          "primaryKey": false,
          "notNull": true
        },
        "title": {
          "name": "title",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "storage_guidance": {
          "name": "storage_guidance",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "translation_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'draft_ai'"
        },
        "source": {
          "name": "source",
          "type": "translation_source",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'ai'"
        },
        "verification": {
          "name": "verification",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "recipe_translations_unique": {
          "name": "recipe_translations_unique",
          "columns": [
            {
              "expression": "recipe_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "language_tag",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "recipe_translations_lang_idx": {
          "name": "recipe_translations_lang_idx",
          "columns": [
            {
              "expression": "language_tag",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "recipe_translations_recipe_id_recipes_id_fk": {
          "name": "recipe_translations_recipe_id_recipes_id_fk",
          "tableFrom": "recipe_translations",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.unit_translations": {
      "name": "unit_translations",
      "schema": "",
      "columns": {
        "unit_code": {
          "name": "unit_code",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "language_tag": {
          "name": "language_tag",
          "type": "varchar(35)",
          "primaryKey": false,
          "notNull": true
        },
        "abbreviation": {
          "name": "abbreviation",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "unit_translations_unit_code_language_tag_pk": {
          "name": "unit_translations_unit_code_language_tag_pk",
          "columns": [
            "unit_code",
            "language_tag"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.allergen_market_rules": {
      "name": "allergen_market_rules",
      "schema": "",
      "columns": {
        "region_code": {
          "name": "region_code",
          "type": "varchar(2)",
          "primaryKey": false,
          "notNull": true
        },
        "allergen": {
          "name": "allergen",
          "type": "allergen",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "must_highlight": {
          "name": "must_highlight",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": true
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "allergen_market_rules_region_code_allergen_pk": {
          "name": "allergen_market_rules_region_code_allergen_pk",
          "columns": [
            "region_code",
            "allergen"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.nutrition_display_profiles": {
      "name": "nutrition_display_profiles",
      "schema": "",
      "columns": {
        "region_code": {
          "name": "region_code",
          "type": "varchar(2)",
          "primaryKey": true,
          "notNull": true
        },
        "energy_display": {
          "name": "energy_display",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "salt_display": {
          "name": "salt_display",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "energy_label_key": {
          "name": "energy_label_key",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.meal_boxes": {
      "name": "meal_boxes",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "cooking_session_id": {
          "name": "cooking_session_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "title_sv": {
          "name": "title_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "portions": {
          "name": "portions",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "portions_remaining": {
          "name": "portions_remaining",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "nutrition_per_portion": {
          "name": "nutrition_per_portion",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "cooked_at": {
          "name": "cooked_at",
          "type": "date",
          "primaryKey": false,
          "notNull": true
        },
        "storage_location_id": {
          "name": "storage_location_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "frozen": {
          "name": "frozen",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "recommended_use_by": {
          "name": "recommended_use_by",
          "type": "date",
          "primaryKey": false,
          "notNull": true
        },
        "leftover_source": {
          "name": "leftover_source",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "reserved_for_user_id": {
          "name": "reserved_for_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'available'"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "meal_boxes_household_idx": {
          "name": "meal_boxes_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "meal_boxes_use_by_idx": {
          "name": "meal_boxes_use_by_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "recommended_use_by",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "meal_boxes_household_id_households_id_fk": {
          "name": "meal_boxes_household_id_households_id_fk",
          "tableFrom": "meal_boxes",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "meal_boxes_recipe_id_recipes_id_fk": {
          "name": "meal_boxes_recipe_id_recipes_id_fk",
          "tableFrom": "meal_boxes",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "meal_boxes_cooking_session_id_cooking_sessions_id_fk": {
          "name": "meal_boxes_cooking_session_id_cooking_sessions_id_fk",
          "tableFrom": "meal_boxes",
          "tableTo": "cooking_sessions",
          "columnsFrom": [
            "cooking_session_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "meal_boxes_storage_location_id_storage_locations_id_fk": {
          "name": "meal_boxes_storage_location_id_storage_locations_id_fk",
          "tableFrom": "meal_boxes",
          "tableTo": "storage_locations",
          "columnsFrom": [
            "storage_location_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "meal_boxes_reserved_for_user_id_users_id_fk": {
          "name": "meal_boxes_reserved_for_user_id_users_id_fk",
          "tableFrom": "meal_boxes",
          "tableTo": "users",
          "columnsFrom": [
            "reserved_for_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.meals": {
      "name": "meals",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "date": {
          "name": "date",
          "type": "date",
          "primaryKey": false,
          "notNull": true
        },
        "meal_type": {
          "name": "meal_type",
          "type": "meal_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "source": {
          "name": "source",
          "type": "meal_log_source",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "cooking_session_id": {
          "name": "cooking_session_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "title_sv": {
          "name": "title_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "portion_fraction": {
          "name": "portion_fraction",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "nutrition": {
          "name": "nutrition",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "nutrition_is_estimate": {
          "name": "nutrition_is_estimate",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "estimate_min_kcal": {
          "name": "estimate_min_kcal",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "estimate_max_kcal": {
          "name": "estimate_max_kcal",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "items": {
          "name": "items",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "photo_url": {
          "name": "photo_url",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "scan_job_id": {
          "name": "scan_job_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "logged_at": {
          "name": "logged_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "meals_user_date_idx": {
          "name": "meals_user_date_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "date",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "meals_household_idx": {
          "name": "meals_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "meals_user_id_users_id_fk": {
          "name": "meals_user_id_users_id_fk",
          "tableFrom": "meals",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "meals_household_id_households_id_fk": {
          "name": "meals_household_id_households_id_fk",
          "tableFrom": "meals",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "meals_recipe_id_recipes_id_fk": {
          "name": "meals_recipe_id_recipes_id_fk",
          "tableFrom": "meals",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "meals_cooking_session_id_cooking_sessions_id_fk": {
          "name": "meals_cooking_session_id_cooking_sessions_id_fk",
          "tableFrom": "meals",
          "tableTo": "cooking_sessions",
          "columnsFrom": [
            "cooking_session_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.shopping_list_items": {
      "name": "shopping_list_items",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "shopping_list_id": {
          "name": "shopping_list_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "display_name": {
          "name": "display_name",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "quantity": {
          "name": "quantity",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 1
        },
        "unit": {
          "name": "unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'COUNT'"
        },
        "store_section": {
          "name": "store_section",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'hygien_ovrigt'"
        },
        "suggested_package_size": {
          "name": "suggested_package_size",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "estimated_price_minor": {
          "name": "estimated_price_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "checked": {
          "name": "checked",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "added_by_user_id": {
          "name": "added_by_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "origin": {
          "name": "origin",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'manual'"
        },
        "sort_order": {
          "name": "sort_order",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        }
      },
      "indexes": {
        "shopping_list_items_list_idx": {
          "name": "shopping_list_items_list_idx",
          "columns": [
            {
              "expression": "shopping_list_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "shopping_list_items_shopping_list_id_shopping_lists_id_fk": {
          "name": "shopping_list_items_shopping_list_id_shopping_lists_id_fk",
          "tableFrom": "shopping_list_items",
          "tableTo": "shopping_lists",
          "columnsFrom": [
            "shopping_list_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "shopping_list_items_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "shopping_list_items_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "shopping_list_items",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "shopping_list_items_added_by_user_id_users_id_fk": {
          "name": "shopping_list_items_added_by_user_id_users_id_fk",
          "tableFrom": "shopping_list_items",
          "tableTo": "users",
          "columnsFrom": [
            "added_by_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.shopping_lists": {
      "name": "shopping_lists",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'Inköpslista'"
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'active'"
        },
        "week_plan_id": {
          "name": "week_plan_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "shopping_lists_household_idx": {
          "name": "shopping_lists_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "shopping_lists_household_id_households_id_fk": {
          "name": "shopping_lists_household_id_households_id_fk",
          "tableFrom": "shopping_lists",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "shopping_lists_week_plan_id_week_plans_id_fk": {
          "name": "shopping_lists_week_plan_id_week_plans_id_fk",
          "tableFrom": "shopping_lists",
          "tableTo": "week_plans",
          "columnsFrom": [
            "week_plan_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.week_plan_entries": {
      "name": "week_plan_entries",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "week_plan_id": {
          "name": "week_plan_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "date": {
          "name": "date",
          "type": "date",
          "primaryKey": false,
          "notNull": true
        },
        "meal_type": {
          "name": "meal_type",
          "type": "meal_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "meal_box_id": {
          "name": "meal_box_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "title_sv": {
          "name": "title_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "portions": {
          "name": "portions",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 2
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'planned'"
        },
        "reschedule_reason_sv": {
          "name": "reschedule_reason_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "sort_order": {
          "name": "sort_order",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        }
      },
      "indexes": {
        "week_plan_entries_plan_idx": {
          "name": "week_plan_entries_plan_idx",
          "columns": [
            {
              "expression": "week_plan_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "week_plan_entries_week_plan_id_week_plans_id_fk": {
          "name": "week_plan_entries_week_plan_id_week_plans_id_fk",
          "tableFrom": "week_plan_entries",
          "tableTo": "week_plans",
          "columnsFrom": [
            "week_plan_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "week_plan_entries_recipe_id_recipes_id_fk": {
          "name": "week_plan_entries_recipe_id_recipes_id_fk",
          "tableFrom": "week_plan_entries",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "week_plan_entries_meal_box_id_meal_boxes_id_fk": {
          "name": "week_plan_entries_meal_box_id_meal_boxes_id_fk",
          "tableFrom": "week_plan_entries",
          "tableTo": "meal_boxes",
          "columnsFrom": [
            "meal_box_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.week_plans": {
      "name": "week_plans",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "week_start_date": {
          "name": "week_start_date",
          "type": "date",
          "primaryKey": false,
          "notNull": true
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'draft'"
        },
        "generated_by": {
          "name": "generated_by",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'user'"
        },
        "notes": {
          "name": "notes",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "week_plans_household_week_idx": {
          "name": "week_plans_household_week_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "week_start_date",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "week_plans_household_id_households_id_fk": {
          "name": "week_plans_household_id_households_id_fk",
          "tableFrom": "week_plans",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.price_observations": {
      "name": "price_observations",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "product_id": {
          "name": "product_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "store_name": {
          "name": "store_name",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "price_minor": {
          "name": "price_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": true
        },
        "quantity": {
          "name": "quantity",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "unit": {
          "name": "unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": false
        },
        "price_per_kg_minor": {
          "name": "price_per_kg_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "observed_at": {
          "name": "observed_at",
          "type": "date",
          "primaryKey": false,
          "notNull": true
        },
        "source": {
          "name": "source",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'receipt'"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "price_observations_ingredient_idx": {
          "name": "price_observations_ingredient_idx",
          "columns": [
            {
              "expression": "canonical_ingredient_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "observed_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "price_observations_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "price_observations_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "price_observations",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "price_observations_product_id_products_id_fk": {
          "name": "price_observations_product_id_products_id_fk",
          "tableFrom": "price_observations",
          "tableTo": "products",
          "columnsFrom": [
            "product_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.receipt_lines": {
      "name": "receipt_lines",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "receipt_id": {
          "name": "receipt_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "raw_text": {
          "name": "raw_text",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "normalized_name": {
          "name": "normalized_name",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "canonical_ingredient_id": {
          "name": "canonical_ingredient_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "product_id": {
          "name": "product_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "quantity": {
          "name": "quantity",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "unit": {
          "name": "unit",
          "type": "unit",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": false
        },
        "unit_price_minor": {
          "name": "unit_price_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "total_price_minor": {
          "name": "total_price_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "confidence": {
          "name": "confidence",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "verified_by_user": {
          "name": "verified_by_user",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "added_to_inventory": {
          "name": "added_to_inventory",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        }
      },
      "indexes": {
        "receipt_lines_receipt_idx": {
          "name": "receipt_lines_receipt_idx",
          "columns": [
            {
              "expression": "receipt_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "receipt_lines_receipt_id_receipts_id_fk": {
          "name": "receipt_lines_receipt_id_receipts_id_fk",
          "tableFrom": "receipt_lines",
          "tableTo": "receipts",
          "columnsFrom": [
            "receipt_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "receipt_lines_canonical_ingredient_id_canonical_ingredients_id_fk": {
          "name": "receipt_lines_canonical_ingredient_id_canonical_ingredients_id_fk",
          "tableFrom": "receipt_lines",
          "tableTo": "canonical_ingredients",
          "columnsFrom": [
            "canonical_ingredient_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        },
        "receipt_lines_product_id_products_id_fk": {
          "name": "receipt_lines_product_id_products_id_fk",
          "tableFrom": "receipt_lines",
          "tableTo": "products",
          "columnsFrom": [
            "product_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "no action",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.receipts": {
      "name": "receipts",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "store_name": {
          "name": "store_name",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "purchase_date": {
          "name": "purchase_date",
          "type": "date",
          "primaryKey": false,
          "notNull": false
        },
        "total_minor": {
          "name": "total_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "discount_minor": {
          "name": "discount_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "image_url": {
          "name": "image_url",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "scan_job_id": {
          "name": "scan_job_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'pending'"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "receipts_household_idx": {
          "name": "receipts_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "purchase_date",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "receipts_household_id_households_id_fk": {
          "name": "receipts_household_id_households_id_fk",
          "tableFrom": "receipts",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ai_corrections": {
      "name": "ai_corrections",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "scan_job_id": {
          "name": "scan_job_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "task_type": {
          "name": "task_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "ai_output": {
          "name": "ai_output",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "user_correction": {
          "name": "user_correction",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "proposal": {
          "name": "proposal",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "image_s3_key": {
          "name": "image_s3_key",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "model_version": {
          "name": "model_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "prompt_version": {
          "name": "prompt_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "consent_snapshot": {
          "name": "consent_snapshot",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "exported_to_training": {
          "name": "exported_to_training",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "training_batch_id": {
          "name": "training_batch_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "ai_corrections_task_idx": {
          "name": "ai_corrections_task_idx",
          "columns": [
            {
              "expression": "task_type",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "ai_corrections_scan_job_id_scan_jobs_id_fk": {
          "name": "ai_corrections_scan_job_id_scan_jobs_id_fk",
          "tableFrom": "ai_corrections",
          "tableTo": "scan_jobs",
          "columnsFrom": [
            "scan_job_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "ai_corrections_user_id_users_id_fk": {
          "name": "ai_corrections_user_id_users_id_fk",
          "tableFrom": "ai_corrections",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ai_training_bank": {
      "name": "ai_training_bank",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "correction_id": {
          "name": "correction_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "scan_job_id": {
          "name": "scan_job_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "version": {
          "name": "version",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'v1'"
        },
        "task_type": {
          "name": "task_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "image_s3_key": {
          "name": "image_s3_key",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "proposal": {
          "name": "proposal",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "action": {
          "name": "action",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "corrected": {
          "name": "corrected",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "model_version": {
          "name": "model_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "prompt_version": {
          "name": "prompt_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "consent_snapshot": {
          "name": "consent_snapshot",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'::jsonb"
        },
        "exported_at": {
          "name": "exported_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "ai_training_bank_correction_unique": {
          "name": "ai_training_bank_correction_unique",
          "columns": [
            {
              "expression": "correction_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "ai_training_bank_version_idx": {
          "name": "ai_training_bank_version_idx",
          "columns": [
            {
              "expression": "version",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "task_type",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "ai_training_bank_scan_job_idx": {
          "name": "ai_training_bank_scan_job_idx",
          "columns": [
            {
              "expression": "scan_job_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "ai_training_bank_created_at_idx": {
          "name": "ai_training_bank_created_at_idx",
          "columns": [
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "ai_training_bank_correction_id_ai_corrections_id_fk": {
          "name": "ai_training_bank_correction_id_ai_corrections_id_fk",
          "tableFrom": "ai_training_bank",
          "tableTo": "ai_corrections",
          "columnsFrom": [
            "correction_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "ai_training_bank_scan_job_id_scan_jobs_id_fk": {
          "name": "ai_training_bank_scan_job_id_scan_jobs_id_fk",
          "tableFrom": "ai_training_bank",
          "tableTo": "scan_jobs",
          "columnsFrom": [
            "scan_job_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.scan_jobs": {
      "name": "scan_jobs",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "scan_type": {
          "name": "scan_type",
          "type": "scan_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "job_type": {
          "name": "job_type",
          "type": "job_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "status": {
          "name": "status",
          "type": "job_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'queued'"
        },
        "s3_keys": {
          "name": "s3_keys",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "context": {
          "name": "context",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "result": {
          "name": "result",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "error": {
          "name": "error",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "model_version": {
          "name": "model_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "prompt_version": {
          "name": "prompt_version",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "latency_ms": {
          "name": "latency_ms",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "cost_usd": {
          "name": "cost_usd",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "attempts": {
          "name": "attempts",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "completed_at": {
          "name": "completed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "scan_jobs_user_idx": {
          "name": "scan_jobs_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "scan_jobs_status_idx": {
          "name": "scan_jobs_status_idx",
          "columns": [
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "scan_jobs_user_id_users_id_fk": {
          "name": "scan_jobs_user_id_users_id_fk",
          "tableFrom": "scan_jobs",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "scan_jobs_household_id_households_id_fk": {
          "name": "scan_jobs_household_id_households_id_fk",
          "tableFrom": "scan_jobs",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.food_memories": {
      "name": "food_memories",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "recipe_id": {
          "name": "recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "title_sv": {
          "name": "title_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "summary_sv": {
          "name": "summary_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "holiday_tag": {
          "name": "holiday_tag",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "photo_url": {
          "name": "photo_url",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "stars": {
          "name": "stars",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "occurred_at": {
          "name": "occurred_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "food_memories_household_idx": {
          "name": "food_memories_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "food_memories_holiday_idx": {
          "name": "food_memories_holiday_idx",
          "columns": [
            {
              "expression": "holiday_tag",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "food_memories_user_id_users_id_fk": {
          "name": "food_memories_user_id_users_id_fk",
          "tableFrom": "food_memories",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "food_memories_household_id_households_id_fk": {
          "name": "food_memories_household_id_households_id_fk",
          "tableFrom": "food_memories",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "food_memories_recipe_id_recipes_id_fk": {
          "name": "food_memories_recipe_id_recipes_id_fk",
          "tableFrom": "food_memories",
          "tableTo": "recipes",
          "columnsFrom": [
            "recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.memory_items": {
      "name": "memory_items",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "kind": {
          "name": "kind",
          "type": "memory_kind",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "key": {
          "name": "key",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "summary_sv": {
          "name": "summary_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "value": {
          "name": "value",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "origin": {
          "name": "origin",
          "type": "signal_origin",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "confidence": {
          "name": "confidence",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 0.5
        },
        "verified_by_user": {
          "name": "verified_by_user",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "paused": {
          "name": "paused",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "last_used_at": {
          "name": "last_used_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "expires_at": {
          "name": "expires_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "memory_items_user_idx": {
          "name": "memory_items_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "kind",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "memory_items_household_idx": {
          "name": "memory_items_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "kind",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "memory_items_key_idx": {
          "name": "memory_items_key_idx",
          "columns": [
            {
              "expression": "key",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "memory_items_user_key_unique": {
          "name": "memory_items_user_key_unique",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "key",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "memory_items_user_id_users_id_fk": {
          "name": "memory_items_user_id_users_id_fk",
          "tableFrom": "memory_items",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "memory_items_household_id_households_id_fk": {
          "name": "memory_items_household_id_households_id_fk",
          "tableFrom": "memory_items",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.taste_signals": {
      "name": "taste_signals",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "axis": {
          "name": "axis",
          "type": "taste_axis",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "target": {
          "name": "target",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "direction": {
          "name": "direction",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true
        },
        "strength": {
          "name": "strength",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true,
          "default": 0.5
        },
        "origin": {
          "name": "origin",
          "type": "signal_origin",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "ref_recipe_id": {
          "name": "ref_recipe_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "taste_signals_user_idx": {
          "name": "taste_signals_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "axis",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "taste_signals_user_axis_target_unique": {
          "name": "taste_signals_user_axis_target_unique",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "axis",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "target",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "taste_signals_user_id_users_id_fk": {
          "name": "taste_signals_user_id_users_id_fk",
          "tableFrom": "taste_signals",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "taste_signals_ref_recipe_id_recipes_id_fk": {
          "name": "taste_signals_ref_recipe_id_recipes_id_fk",
          "tableFrom": "taste_signals",
          "tableTo": "recipes",
          "columnsFrom": [
            "ref_recipe_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.season_events": {
      "name": "season_events",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "text",
          "primaryKey": true,
          "notNull": true
        },
        "slug": {
          "name": "slug",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "name_sv": {
          "name": "name_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "name_localized": {
          "name": "name_localized",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "market": {
          "name": "market",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'SE'"
        },
        "date_rule": {
          "name": "date_rule",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "lead_days": {
          "name": "lead_days",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 7
        },
        "food_tags": {
          "name": "food_tags",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "recipe_slugs": {
          "name": "recipe_slugs",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "priority": {
          "name": "priority",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "active": {
          "name": "active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "season_events_slug_market_unique": {
          "name": "season_events_slug_market_unique",
          "columns": [
            {
              "expression": "slug",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "market",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ai_usage_counters": {
      "name": "ai_usage_counters",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "month": {
          "name": "month",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "ai_scans": {
          "name": "ai_scans",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "ai_tokens_in": {
          "name": "ai_tokens_in",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "ai_tokens_out": {
          "name": "ai_tokens_out",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "ai_cost_usd_microcents": {
          "name": "ai_cost_usd_microcents",
          "type": "bigint",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "ai_usage_user_month_unique": {
          "name": "ai_usage_user_month_unique",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "month",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "ai_usage_counters_user_id_users_id_fk": {
          "name": "ai_usage_counters_user_id_users_id_fk",
          "tableFrom": "ai_usage_counters",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.store_notifications": {
      "name": "store_notifications",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "provider": {
          "name": "provider",
          "type": "subscription_provider",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "notification_type": {
          "name": "notification_type",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "raw_payload": {
          "name": "raw_payload",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "signature_verified": {
          "name": "signature_verified",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "processed": {
          "name": "processed",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "processed_at": {
          "name": "processed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "error": {
          "name": "error",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "store_notifications_pending_idx": {
          "name": "store_notifications_pending_idx",
          "columns": [
            {
              "expression": "processed",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.store_transactions": {
      "name": "store_transactions",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "provider": {
          "name": "provider",
          "type": "subscription_provider",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "transaction_id": {
          "name": "transaction_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "original_transaction_id": {
          "name": "original_transaction_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "pseudonym": {
          "name": "pseudonym",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "product_id": {
          "name": "product_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "raw_payload": {
          "name": "raw_payload",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "processed_at": {
          "name": "processed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "store_transactions_unique": {
          "name": "store_transactions_unique",
          "columns": [
            {
              "expression": "provider",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "transaction_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "store_transactions_pseudonym_idx": {
          "name": "store_transactions_pseudonym_idx",
          "columns": [
            {
              "expression": "pseudonym",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "store_transactions_user_id_users_id_fk": {
          "name": "store_transactions_user_id_users_id_fk",
          "tableFrom": "store_transactions",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "store_transactions_pseudonym_gdpr_retention_pseudonyms_pseudonym_fk": {
          "name": "store_transactions_pseudonym_gdpr_retention_pseudonyms_pseudonym_fk",
          "tableFrom": "store_transactions",
          "tableTo": "gdpr_retention_pseudonyms",
          "columnsFrom": [
            "pseudonym"
          ],
          "columnsTo": [
            "pseudonym"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.subscription_events": {
      "name": "subscription_events",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "subscription_id": {
          "name": "subscription_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "pseudonym": {
          "name": "pseudonym",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "event_type": {
          "name": "event_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "payload": {
          "name": "payload",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "subscription_events_sub_idx": {
          "name": "subscription_events_sub_idx",
          "columns": [
            {
              "expression": "subscription_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "subscription_events_pseudonym_idx": {
          "name": "subscription_events_pseudonym_idx",
          "columns": [
            {
              "expression": "pseudonym",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "subscription_events_subscription_id_subscriptions_id_fk": {
          "name": "subscription_events_subscription_id_subscriptions_id_fk",
          "tableFrom": "subscription_events",
          "tableTo": "subscriptions",
          "columnsFrom": [
            "subscription_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "subscription_events_user_id_users_id_fk": {
          "name": "subscription_events_user_id_users_id_fk",
          "tableFrom": "subscription_events",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "subscription_events_pseudonym_gdpr_retention_pseudonyms_pseudonym_fk": {
          "name": "subscription_events_pseudonym_gdpr_retention_pseudonyms_pseudonym_fk",
          "tableFrom": "subscription_events",
          "tableTo": "gdpr_retention_pseudonyms",
          "columnsFrom": [
            "pseudonym"
          ],
          "columnsTo": [
            "pseudonym"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.subscriptions": {
      "name": "subscriptions",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "pseudonym": {
          "name": "pseudonym",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "provider": {
          "name": "provider",
          "type": "subscription_provider",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "product_id": {
          "name": "product_id",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "plan": {
          "name": "plan",
          "type": "subscription_plan",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "original_transaction_id": {
          "name": "original_transaction_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "subscription_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "purchased_at": {
          "name": "purchased_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "expires_at": {
          "name": "expires_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "grace_period_expires_at": {
          "name": "grace_period_expires_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "canceled_at": {
          "name": "canceled_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "last_verified_at": {
          "name": "last_verified_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "subscriptions_user_idx": {
          "name": "subscriptions_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "subscriptions_pseudonym_idx": {
          "name": "subscriptions_pseudonym_idx",
          "columns": [
            {
              "expression": "pseudonym",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "subscriptions_original_tx_unique": {
          "name": "subscriptions_original_tx_unique",
          "columns": [
            {
              "expression": "provider",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "original_transaction_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "where": "\"subscriptions\".\"original_transaction_id\" IS NOT NULL",
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "subscriptions_user_id_users_id_fk": {
          "name": "subscriptions_user_id_users_id_fk",
          "tableFrom": "subscriptions",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "subscriptions_pseudonym_gdpr_retention_pseudonyms_pseudonym_fk": {
          "name": "subscriptions_pseudonym_gdpr_retention_pseudonyms_pseudonym_fk",
          "tableFrom": "subscriptions",
          "tableTo": "gdpr_retention_pseudonyms",
          "columnsFrom": [
            "pseudonym"
          ],
          "columnsTo": [
            "pseudonym"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "subscriptions_household_id_households_id_fk": {
          "name": "subscriptions_household_id_households_id_fk",
          "tableFrom": "subscriptions",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.trials": {
      "name": "trials",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "started_at": {
          "name": "started_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "ends_at": {
          "name": "ends_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true
        }
      },
      "indexes": {},
      "foreignKeys": {
        "trials_user_id_users_id_fk": {
          "name": "trials_user_id_users_id_fk",
          "tableFrom": "trials",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.analytics_daily_snapshots": {
      "name": "analytics_daily_snapshots",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "date": {
          "name": "date",
          "type": "varchar(10)",
          "primaryKey": false,
          "notNull": true
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "event_name": {
          "name": "event_name",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": true
        },
        "count": {
          "name": "count",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "unique_sessions": {
          "name": "unique_sessions",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "properties_fingerprint": {
          "name": "properties_fingerprint",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {
        "pa_daily_household_date_idx": {
          "name": "pa_daily_household_date_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "date",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "pa_daily_date_event_idx": {
          "name": "pa_daily_date_event_idx",
          "columns": [
            {
              "expression": "date",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "event_name",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "analytics_daily_snapshots_household_id_households_id_fk": {
          "name": "analytics_daily_snapshots_household_id_households_id_fk",
          "tableFrom": "analytics_daily_snapshots",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.product_analytics_events": {
      "name": "product_analytics_events",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "occurred_at": {
          "name": "occurred_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "received_at": {
          "name": "received_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "event_name": {
          "name": "event_name",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": true
        },
        "anonymous_id": {
          "name": "anonymous_id",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": false
        },
        "session_id": {
          "name": "session_id",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": false
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "app_version": {
          "name": "app_version",
          "type": "varchar(32)",
          "primaryKey": false,
          "notNull": false
        },
        "platform": {
          "name": "platform",
          "type": "varchar(16)",
          "primaryKey": false,
          "notNull": false
        },
        "locale": {
          "name": "locale",
          "type": "varchar(16)",
          "primaryKey": false,
          "notNull": false
        },
        "experiment_variant": {
          "name": "experiment_variant",
          "type": "varchar(128)",
          "primaryKey": false,
          "notNull": false
        },
        "properties": {
          "name": "properties",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'::jsonb"
        }
      },
      "indexes": {
        "pa_events_name_occurred_idx": {
          "name": "pa_events_name_occurred_idx",
          "columns": [
            {
              "expression": "event_name",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "pa_events_household_occurred_idx": {
          "name": "pa_events_household_occurred_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "pa_events_user_occurred_idx": {
          "name": "pa_events_user_occurred_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "pa_events_session_idx": {
          "name": "pa_events_session_idx",
          "columns": [
            {
              "expression": "session_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "pa_events_received_idx": {
          "name": "pa_events_received_idx",
          "columns": [
            {
              "expression": "received_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "product_analytics_events_user_id_users_id_fk": {
          "name": "product_analytics_events_user_id_users_id_fk",
          "tableFrom": "product_analytics_events",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "product_analytics_events_household_id_households_id_fk": {
          "name": "product_analytics_events_household_id_households_id_fk",
          "tableFrom": "product_analytics_events",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.feedback": {
      "name": "feedback",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "typ": {
          "name": "typ",
          "type": "feedback_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "rubrik": {
          "name": "rubrik",
          "type": "varchar(200)",
          "primaryKey": false,
          "notNull": true
        },
        "text": {
          "name": "text",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "status": {
          "name": "status",
          "type": "feedback_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'oppen'"
        },
        "plattform": {
          "name": "plattform",
          "type": "varchar(16)",
          "primaryKey": false,
          "notNull": false
        },
        "app_version": {
          "name": "app_version",
          "type": "varchar(32)",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "feedback_status_created_idx": {
          "name": "feedback_status_created_idx",
          "columns": [
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "feedback_user_idx": {
          "name": "feedback_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "feedback_user_id_users_id_fk": {
          "name": "feedback_user_id_users_id_fk",
          "tableFrom": "feedback",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ops_safety_canary": {
      "name": "ops_safety_canary",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "occurred_at": {
          "name": "occurred_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "allergen_invariant_brott": {
          "name": "allergen_invariant_brott",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "overifierade_visade": {
          "name": "overifierade_visade",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "food_safety_lint_avvisade_7d": {
          "name": "food_safety_lint_avvisade_7d",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "computed_at": {
          "name": "computed_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ai_eval_cases": {
      "name": "ai_eval_cases",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "task_type": {
          "name": "task_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "name_sv": {
          "name": "name_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "input_ref": {
          "name": "input_ref",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "expected_output": {
          "name": "expected_output",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "category": {
          "name": "category",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'standard'"
        },
        "active": {
          "name": "active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.ai_eval_runs": {
      "name": "ai_eval_runs",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "task_type": {
          "name": "task_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "model_version": {
          "name": "model_version",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "prompt_version": {
          "name": "prompt_version",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "metrics": {
          "name": "metrics",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "passed": {
          "name": "passed",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true
        },
        "notes": {
          "name": "notes",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "ai_eval_runs_task_idx": {
          "name": "ai_eval_runs_task_idx",
          "columns": [
            {
              "expression": "task_type",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.audit_logs": {
      "name": "audit_logs",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "actor_user_id": {
          "name": "actor_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "actor_type": {
          "name": "actor_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "default": "'user'"
        },
        "action": {
          "name": "action",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "target_type": {
          "name": "target_type",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "target_id": {
          "name": "target_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "metadata": {
          "name": "metadata",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "ip": {
          "name": "ip",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "correlation_id": {
          "name": "correlation_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "audit_logs_actor_idx": {
          "name": "audit_logs_actor_idx",
          "columns": [
            {
              "expression": "actor_user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "audit_logs_action_idx": {
          "name": "audit_logs_action_idx",
          "columns": [
            {
              "expression": "action",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.creator_follows": {
      "name": "creator_follows",
      "schema": "",
      "columns": {
        "follower_user_id": {
          "name": "follower_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "creator_user_id": {
          "name": "creator_user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "creator_follows_follower_user_id_users_id_fk": {
          "name": "creator_follows_follower_user_id_users_id_fk",
          "tableFrom": "creator_follows",
          "tableTo": "users",
          "columnsFrom": [
            "follower_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "creator_follows_creator_user_id_users_id_fk": {
          "name": "creator_follows_creator_user_id_users_id_fk",
          "tableFrom": "creator_follows",
          "tableTo": "users",
          "columnsFrom": [
            "creator_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "creator_follows_follower_user_id_creator_user_id_pk": {
          "name": "creator_follows_follower_user_id_creator_user_id_pk",
          "columns": [
            "follower_user_id",
            "creator_user_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.creator_stats": {
      "name": "creator_stats",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true
        },
        "visibility": {
          "name": "visibility",
          "type": "profile_visibility",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'private'"
        },
        "level": {
          "name": "level",
          "type": "creator_level",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'beginner'"
        },
        "published_recipes": {
          "name": "published_recipes",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "followers": {
          "name": "followers",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "total_cooks": {
          "name": "total_cooks",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "total_favorites": {
          "name": "total_favorites",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "average_rating": {
          "name": "average_rating",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "verified_recipes": {
          "name": "verified_recipes",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "badges": {
          "name": "badges",
          "type": "text[]",
          "primaryKey": false,
          "notNull": true,
          "default": "'{}'"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "creator_stats_user_id_users_id_fk": {
          "name": "creator_stats_user_id_users_id_fk",
          "tableFrom": "creator_stats",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.domain_events": {
      "name": "domain_events",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "type": {
          "name": "type",
          "type": "event_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": false
        },
        "payload": {
          "name": "payload",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": true
        },
        "correlation_id": {
          "name": "correlation_id",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "occurred_at": {
          "name": "occurred_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "published_at": {
          "name": "published_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {
        "domain_events_unpublished_idx": {
          "name": "domain_events_unpublished_idx",
          "columns": [
            {
              "expression": "published_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "domain_events_type_idx": {
          "name": "domain_events_type_idx",
          "columns": [
            {
              "expression": "type",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "domain_events_household_idx": {
          "name": "domain_events_household_idx",
          "columns": [
            {
              "expression": "household_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "occurred_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.feature_flags": {
      "name": "feature_flags",
      "schema": "",
      "columns": {
        "key": {
          "name": "key",
          "type": "text",
          "primaryKey": true,
          "notNull": true
        },
        "enabled": {
          "name": "enabled",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "description_sv": {
          "name": "description_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "rollout_percent": {
          "name": "rollout_percent",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 100
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.idempotency_keys": {
      "name": "idempotency_keys",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "key": {
          "name": "key",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "endpoint": {
          "name": "endpoint",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "response_status": {
          "name": "response_status",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "response_body": {
          "name": "response_body",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "idempotency_keys_user_id_users_id_fk": {
          "name": "idempotency_keys_user_id_users_id_fk",
          "tableFrom": "idempotency_keys",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "idempotency_keys_user_id_key_endpoint_pk": {
          "name": "idempotency_keys_user_id_key_endpoint_pk",
          "columns": [
            "user_id",
            "key",
            "endpoint"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.notifications": {
      "name": "notifications",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "type": {
          "name": "type",
          "type": "notification_type",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "title_sv": {
          "name": "title_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "body_sv": {
          "name": "body_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "data": {
          "name": "data",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "template_key": {
          "name": "template_key",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "variables": {
          "name": "variables",
          "type": "jsonb",
          "primaryKey": false,
          "notNull": false
        },
        "locale": {
          "name": "locale",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "scheduled_for": {
          "name": "scheduled_for",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "sent_at": {
          "name": "sent_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "read_at": {
          "name": "read_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "notifications_user_idx": {
          "name": "notifications_user_idx",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "created_at",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "notifications_user_id_users_id_fk": {
          "name": "notifications_user_id_users_id_fk",
          "tableFrom": "notifications",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.push_tokens": {
      "name": "push_tokens",
      "schema": "",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "token": {
          "name": "token",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "platform": {
          "name": "platform",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "push_tokens_user_id_users_id_fk": {
          "name": "push_tokens_user_id_users_id_fk",
          "tableFrom": "push_tokens",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "push_tokens_user_id_token_pk": {
          "name": "push_tokens_user_id_token_pk",
          "columns": [
            "user_id",
            "token"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.waste_summaries": {
      "name": "waste_summaries",
      "schema": "",
      "columns": {
        "household_id": {
          "name": "household_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "week_start_date": {
          "name": "week_start_date",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "discarded_count": {
          "name": "discarded_count",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "discarded_value_minor": {
          "name": "discarded_value_minor",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 0
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {},
      "foreignKeys": {
        "waste_summaries_household_id_households_id_fk": {
          "name": "waste_summaries_household_id_households_id_fk",
          "tableFrom": "waste_summaries",
          "tableTo": "households",
          "columnsFrom": [
            "household_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "waste_summaries_household_id_week_start_date_pk": {
          "name": "waste_summaries_household_id_week_start_date_pk",
          "columns": [
            "household_id",
            "week_start_date"
          ]
        }
      },
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.release_gates": {
      "name": "release_gates",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "gate_key": {
          "name": "gate_key",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": true
        },
        "category": {
          "name": "category",
          "type": "release_gate_category",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "name_sv": {
          "name": "name_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "name_en": {
          "name": "name_en",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "description_sv": {
          "name": "description_sv",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "description_en": {
          "name": "description_en",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "target_value": {
          "name": "target_value",
          "type": "double precision",
          "primaryKey": false,
          "notNull": true
        },
        "comparison": {
          "name": "comparison",
          "type": "release_gate_comparison",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true
        },
        "evaluation_window_days": {
          "name": "evaluation_window_days",
          "type": "integer",
          "primaryKey": false,
          "notNull": true,
          "default": 7
        },
        "last_value": {
          "name": "last_value",
          "type": "double precision",
          "primaryKey": false,
          "notNull": false
        },
        "last_evaluated_at": {
          "name": "last_evaluated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": false
        },
        "status": {
          "name": "status",
          "type": "release_gate_status",
          "typeSchema": "public",
          "primaryKey": false,
          "notNull": true,
          "default": "'pending'"
        },
        "blocking": {
          "name": "blocking",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "default": false
        },
        "notes": {
          "name": "notes",
          "type": "text",
          "primaryKey": false,
          "notNull": false
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "release_gates_category_idx": {
          "name": "release_gates_category_idx",
          "columns": [
            {
              "expression": "category",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        },
        "release_gates_status_idx": {
          "name": "release_gates_status_idx",
          "columns": [
            {
              "expression": "status",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": false,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {
        "release_gates_gate_key_unique": {
          "name": "release_gates_gate_key_unique",
          "nullsNotDistinct": false,
          "columns": [
            "gate_key"
          ]
        }
      },
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.gemini_usage": {
      "name": "gemini_usage",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "task_type": {
          "name": "task_type",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "prompt_tokens": {
          "name": "prompt_tokens",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "output_tokens": {
          "name": "output_tokens",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "total_tokens": {
          "name": "total_tokens",
          "type": "integer",
          "primaryKey": false,
          "notNull": false
        },
        "cost_microcents": {
          "name": "cost_microcents",
          "type": "bigint",
          "primaryKey": false,
          "notNull": false
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    },
    "public.user_terms_consents": {
      "name": "user_terms_consents",
      "schema": "",
      "columns": {
        "id": {
          "name": "id",
          "type": "uuid",
          "primaryKey": true,
          "notNull": true,
          "default": "gen_random_uuid()"
        },
        "user_id": {
          "name": "user_id",
          "type": "uuid",
          "primaryKey": false,
          "notNull": true
        },
        "terms_version": {
          "name": "terms_version",
          "type": "text",
          "primaryKey": false,
          "notNull": true
        },
        "accepted_at": {
          "name": "accepted_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        },
        "created_at": {
          "name": "created_at",
          "type": "timestamp with time zone",
          "primaryKey": false,
          "notNull": true,
          "default": "now()"
        }
      },
      "indexes": {
        "user_terms_consents_user_version_unique": {
          "name": "user_terms_consents_user_version_unique",
          "columns": [
            {
              "expression": "user_id",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            },
            {
              "expression": "terms_version",
              "isExpression": false,
              "asc": true,
              "nulls": "last"
            }
          ],
          "isUnique": true,
          "concurrently": false,
          "method": "btree",
          "with": {}
        }
      },
      "foreignKeys": {
        "user_terms_consents_user_id_users_id_fk": {
          "name": "user_terms_consents_user_id_users_id_fk",
          "tableFrom": "user_terms_consents",
          "tableTo": "users",
          "columnsFrom": [
            "user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {},
      "uniqueConstraints": {},
      "policies": {},
      "checkConstraints": {},
      "isRLSEnabled": false
    }
  },
  "enums": {
    "public.activity_level": {
      "name": "activity_level",
      "schema": "public",
      "values": [
        "sedentary",
        "light",
        "moderate",
        "active",
        "very_active"
      ]
    },
    "public.allergen": {
      "name": "allergen",
      "schema": "public",
      "values": [
        "gluten",
        "crustaceans",
        "eggs",
        "fish",
        "peanuts",
        "soy",
        "milk",
        "tree_nuts",
        "celery",
        "mustard",
        "sesame",
        "sulphites",
        "lupin",
        "molluscs"
      ]
    },
    "public.consent_kind": {
      "name": "consent_kind",
      "schema": "public",
      "values": [
        "personalization",
        "anonymized_improvement",
        "image_training",
        "health_integration",
        "location_weather",
        "push_notifications",
        "notifications",
        "product_analytics"
      ]
    },
    "public.consent_status": {
      "name": "consent_status",
      "schema": "public",
      "values": [
        "granted",
        "denied",
        "revoked"
      ]
    },
    "public.cooking_method": {
      "name": "cooking_method",
      "schema": "public",
      "values": [
        "stovetop",
        "oven",
        "grill",
        "airfryer",
        "wok",
        "slow_cooker",
        "sous_vide",
        "microwave",
        "no_cook",
        "pressure_cooker",
        "deep_fry",
        "steam"
      ]
    },
    "public.creator_level": {
      "name": "creator_level",
      "schema": "public",
      "values": [
        "beginner",
        "sous_chef",
        "chef",
        "master_chef",
        "legend"
      ]
    },
    "public.cuisine": {
      "name": "cuisine",
      "schema": "public",
      "values": [
        "swedish",
        "nordic",
        "italian",
        "french",
        "spanish",
        "greek",
        "thai",
        "chinese",
        "japanese",
        "korean",
        "vietnamese",
        "indian",
        "mexican",
        "american",
        "turkish",
        "lebanese",
        "moroccan",
        "middle_eastern",
        "international"
      ]
    },
    "public.date_kind": {
      "name": "date_kind",
      "schema": "public",
      "values": [
        "best_before",
        "use_by"
      ]
    },
    "public.diet_pattern": {
      "name": "diet_pattern",
      "schema": "public",
      "values": [
        "omnivore",
        "flexitarian",
        "pescatarian",
        "vegetarian",
        "vegan",
        "low_carb",
        "keto",
        "high_protein",
        "mediterranean"
      ]
    },
    "public.event_type": {
      "name": "event_type",
      "schema": "public",
      "values": [
        "PRODUCT_ADDED",
        "PRODUCT_UPDATED",
        "PRODUCT_CONSUMED",
        "PRODUCT_DISCARDED",
        "RECIPE_COOKED",
        "RECIPE_RATED",
        "RECIPE_CREATED",
        "RECIPE_FORKED",
        "MEAL_LOGGED",
        "MEAL_PHOTO_ANALYZED",
        "HOUSEHOLD_MEMBER_ADDED",
        "SUBSCRIPTION_STARTED",
        "SUBSCRIPTION_CHANGED",
        "AI_CORRECTED",
        "MEMORY_UPDATED",
        "SHOPPING_COMPLETED",
        "WEEK_PLAN_UPDATED",
        "MEAL_BOX_CREATED",
        "MEAL_BOX_UPDATED",
        "MEAL_BOX_CONSUMED",
        "MEAL_BOX_DISCARDED",
        "MEAL_REMOVED",
        "COOKING_SESSION_UNDONE"
      ]
    },
    "public.expiry_status": {
      "name": "expiry_status",
      "schema": "public",
      "values": [
        "fresh",
        "use_soon",
        "expiring",
        "expired",
        "unknown"
      ]
    },
    "public.goal_type": {
      "name": "goal_type",
      "schema": "public",
      "values": [
        "lose_weight",
        "gain_weight",
        "build_muscle",
        "maintain_weight",
        "more_protein",
        "less_fat",
        "more_fiber",
        "more_variety",
        "less_waste",
        "lower_cost",
        "cook_more"
      ]
    },
    "public.household_role": {
      "name": "household_role",
      "schema": "public",
      "values": [
        "owner",
        "adult",
        "member",
        "child"
      ]
    },
    "public.inventory_source": {
      "name": "inventory_source",
      "schema": "public",
      "values": [
        "fridge_photo",
        "freezer_photo",
        "pantry_photo",
        "ingredient_photo",
        "barcode",
        "receipt",
        "digital_receipt",
        "label_photo",
        "manual_search",
        "free_text",
        "voice",
        "cooked_recipe",
        "connector",
        "seed"
      ]
    },
    "public.inventory_transaction_type": {
      "name": "inventory_transaction_type",
      "schema": "public",
      "values": [
        "purchase",
        "consume",
        "discard",
        "adjust",
        "cook_use",
        "leftover_created",
        "leftover_consumed",
        "correction",
        "freeze",
        "thaw",
        "move"
      ]
    },
    "public.job_status": {
      "name": "job_status",
      "schema": "public",
      "values": [
        "queued",
        "running",
        "awaiting_confirmation",
        "completed",
        "failed",
        "canceled"
      ]
    },
    "public.job_type": {
      "name": "job_type",
      "schema": "public",
      "values": [
        "ANALYZE_FRIDGE_IMAGE",
        "ANALYZE_PANTRY_IMAGE",
        "ANALYZE_MEAL_IMAGE",
        "READ_RECEIPT",
        "READ_NUTRITION_LABEL",
        "READ_EXPIRY_DATE",
        "NORMALIZE_PRODUCTS",
        "DEDUPLICATE_INVENTORY",
        "CALCULATE_NUTRITION",
        "GENERATE_RECIPE_OPTIONS",
        "RANK_RECIPES",
        "UPDATE_USER_MEMORY",
        "GENERATE_WEEK_PLAN",
        "SEND_EXPIRY_NOTIFICATION",
        "VERIFY_SUBSCRIPTION",
        "PROCESS_STORE_NOTIFICATION",
        "BUILD_TRAINING_SAMPLE",
        "RUN_AI_EVALUATION"
      ]
    },
    "public.meal_log_source": {
      "name": "meal_log_source",
      "schema": "public",
      "values": [
        "cooked_recipe",
        "plate_photo",
        "barcode",
        "product",
        "free_text",
        "voice",
        "previous_meal",
        "meal_box",
        "manual"
      ]
    },
    "public.meal_type": {
      "name": "meal_type",
      "schema": "public",
      "values": [
        "breakfast",
        "lunch",
        "dinner",
        "snack",
        "dessert",
        "starter",
        "buffet",
        "party"
      ]
    },
    "public.memory_kind": {
      "name": "memory_kind",
      "schema": "public",
      "values": [
        "structured_fact",
        "event",
        "semantic",
        "profile_summary",
        "recipe_memory"
      ]
    },
    "public.notification_type": {
      "name": "notification_type",
      "schema": "public",
      "values": [
        "expiry_warning",
        "meal_box_reminder",
        "quick_dinner_suggestion",
        "holiday_upcoming",
        "creator_new_recipe",
        "week_plan_change",
        "pantry_forecast",
        "subscription_status",
        "proactive_tip"
      ]
    },
    "public.precision_mode": {
      "name": "precision_mode",
      "schema": "public",
      "values": [
        "simple",
        "exact"
      ]
    },
    "public.profile_visibility": {
      "name": "profile_visibility",
      "schema": "public",
      "values": [
        "private",
        "friends",
        "national",
        "global"
      ]
    },
    "public.recipe_difficulty": {
      "name": "recipe_difficulty",
      "schema": "public",
      "values": [
        "beginner",
        "easy",
        "medium",
        "advanced",
        "expert"
      ]
    },
    "public.recipe_similarity_class": {
      "name": "recipe_similarity_class",
      "schema": "public",
      "values": [
        "duplicate",
        "variant",
        "inspired",
        "independent"
      ]
    },
    "public.recipe_source_type": {
      "name": "recipe_source_type",
      "schema": "public",
      "values": [
        "own_editorial",
        "ai_assisted_reviewed",
        "open_license",
        "public_domain",
        "licensed_database",
        "creator_agreement",
        "user_generated"
      ]
    },
    "public.recipe_status": {
      "name": "recipe_status",
      "schema": "public",
      "values": [
        "draft",
        "submitted",
        "ai_checked",
        "in_moderation",
        "published",
        "rejected",
        "archived"
      ]
    },
    "public.recipe_variant_type": {
      "name": "recipe_variant_type",
      "schema": "public",
      "values": [
        "standard",
        "high_protein",
        "low_calorie",
        "low_fat",
        "vegetarian",
        "vegan",
        "gluten_free",
        "lactose_free",
        "kid_friendly",
        "airfryer",
        "budget"
      ]
    },
    "public.recipe_verification_status": {
      "name": "recipe_verification_status",
      "schema": "public",
      "values": [
        "unverified",
        "community",
        "verified",
        "editorial",
        "rejected"
      ]
    },
    "public.religious_rule": {
      "name": "religious_rule",
      "schema": "public",
      "values": [
        "none",
        "halal",
        "kosher",
        "hindu_no_beef",
        "buddhist_vegetarian"
      ]
    },
    "public.scan_type": {
      "name": "scan_type",
      "schema": "public",
      "values": [
        "fridge",
        "freezer",
        "pantry",
        "ingredients",
        "plate",
        "receipt",
        "barcode",
        "expiry_date",
        "nutrition_label",
        "product_package"
      ]
    },
    "public.sex": {
      "name": "sex",
      "schema": "public",
      "values": [
        "female",
        "male",
        "unspecified"
      ]
    },
    "public.signal_origin": {
      "name": "signal_origin",
      "schema": "public",
      "values": [
        "user_stated",
        "observed",
        "ai_inferred"
      ]
    },
    "public.storage_location_type": {
      "name": "storage_location_type",
      "schema": "public",
      "values": [
        "fridge",
        "freezer",
        "pantry",
        "garage_freezer",
        "wine_fridge",
        "cellar",
        "meal_box",
        "custom"
      ]
    },
    "public.subscription_plan": {
      "name": "subscription_plan",
      "schema": "public",
      "values": [
        "free",
        "household",
        "family",
        "large_household"
      ]
    },
    "public.subscription_provider": {
      "name": "subscription_provider",
      "schema": "public",
      "values": [
        "apple",
        "google",
        "promo",
        "none"
      ]
    },
    "public.subscription_status": {
      "name": "subscription_status",
      "schema": "public",
      "values": [
        "trial",
        "active",
        "in_grace",
        "on_hold",
        "paused",
        "canceled",
        "expired"
      ]
    },
    "public.taste_axis": {
      "name": "taste_axis",
      "schema": "public",
      "values": [
        "spice",
        "salt",
        "acid",
        "creaminess",
        "garlic",
        "sweetness",
        "herbs",
        "umami",
        "cuisine",
        "ingredient_avoid"
      ]
    },
    "public.unit": {
      "name": "unit",
      "schema": "public",
      "values": [
        "GRAM",
        "KILOGRAM",
        "MILLILITER",
        "DECILITER",
        "LITER",
        "TEASPOON",
        "TABLESPOON",
        "CUP_US",
        "FLUID_OUNCE_US",
        "OUNCE",
        "POUND",
        "COUNT",
        "PORTION",
        "PINCH",
        "SLICE",
        "CLOVE",
        "CAN",
        "PACKAGE"
      ]
    },
    "public.user_role": {
      "name": "user_role",
      "schema": "public",
      "values": [
        "user",
        "moderator",
        "admin"
      ]
    },
    "public.verification_status": {
      "name": "verification_status",
      "schema": "public",
      "values": [
        "unverified",
        "user_verified",
        "editorially_verified"
      ]
    },
    "public.measurement_system": {
      "name": "measurement_system",
      "schema": "public",
      "values": [
        "METRIC",
        "US_CUSTOMARY",
        "MIXED"
      ]
    },
    "public.temperature_unit": {
      "name": "temperature_unit",
      "schema": "public",
      "values": [
        "CELSIUS",
        "FAHRENHEIT"
      ]
    },
    "public.translation_source": {
      "name": "translation_source",
      "schema": "public",
      "values": [
        "seed",
        "ai",
        "human"
      ]
    },
    "public.translation_status": {
      "name": "translation_status",
      "schema": "public",
      "values": [
        "draft_ai",
        "in_review",
        "published"
      ]
    },
    "public.feedback_status": {
      "name": "feedback_status",
      "schema": "public",
      "values": [
        "oppen",
        "pagar",
        "stangd"
      ]
    },
    "public.feedback_type": {
      "name": "feedback_type",
      "schema": "public",
      "values": [
        "bug",
        "onskemal"
      ]
    },
    "public.release_gate_category": {
      "name": "release_gate_category",
      "schema": "public",
      "values": [
        "product",
        "quality",
        "retention",
        "economy"
      ]
    },
    "public.release_gate_comparison": {
      "name": "release_gate_comparison",
      "schema": "public",
      "values": [
        "gte",
        "lte",
        "eq"
      ]
    },
    "public.release_gate_status": {
      "name": "release_gate_status",
      "schema": "public",
      "values": [
        "pending",
        "passed",
        "failed",
        "blocked",
        "not_measurable"
      ]
    }
  },
  "schemas": {},
  "sequences": {},
  "roles": {},
  "policies": {},
  "views": {},
  "_meta": {
    "columns": {},
    "schemas": {},
    "tables": {}
  }
}