{ "id": "5b4379e4-2602-45ce-835e-ccf420604b22", "prevId": "72c45577-c736-417f-9217-2c1a8faf68e1", "version": "7", "dialect": "postgresql", "tables": { "public.accounts": { "name": "accounts", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "account_id": { "name": "account_id", "type": "text", "primaryKey": false, "notNull": true }, "provider_id": { "name": "provider_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "access_token": { "name": "access_token", "type": "text", "primaryKey": false, "notNull": false }, "refresh_token": { "name": "refresh_token", "type": "text", "primaryKey": false, "notNull": false }, "id_token": { "name": "id_token", "type": "text", "primaryKey": false, "notNull": false }, "access_token_expires_at": { "name": "access_token_expires_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "refresh_token_expires_at": { "name": "refresh_token_expires_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "scope": { "name": "scope", "type": "text", "primaryKey": false, "notNull": false }, "password": { "name": "password", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "accounts_user_id_users_id_fk": { "name": "accounts_user_id_users_id_fk", "tableFrom": "accounts", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.api_keys": { "name": "api_keys", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "key_hash": { "name": "key_hash", "type": "text", "primaryKey": false, "notNull": true }, "last_used_at": { "name": "last_used_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "api_keys_user_id_users_id_fk": { "name": "api_keys_user_id_users_id_fk", "tableFrom": "api_keys", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "api_keys_key_hash_unique": { "name": "api_keys_key_hash_unique", "nullsNotDistinct": false, "columns": [ "key_hash" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.push_subscriptions": { "name": "push_subscriptions", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "endpoint": { "name": "endpoint", "type": "text", "primaryKey": false, "notNull": true }, "p256dh": { "name": "p256dh", "type": "text", "primaryKey": false, "notNull": true }, "auth": { "name": "auth", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "push_subscriptions_user_id_users_id_fk": { "name": "push_subscriptions_user_id_users_id_fk", "tableFrom": "push_subscriptions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "push_subscriptions_endpoint_unique": { "name": "push_subscriptions_endpoint_unique", "nullsNotDistinct": false, "columns": [ "endpoint" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.sessions": { "name": "sessions", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp", "primaryKey": false, "notNull": true }, "token": { "name": "token", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "ip_address": { "name": "ip_address", "type": "text", "primaryKey": false, "notNull": false }, "user_agent": { "name": "user_agent", "type": "text", "primaryKey": false, "notNull": false }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true } }, "indexes": {}, "foreignKeys": { "sessions_user_id_users_id_fk": { "name": "sessions_user_id_users_id_fk", "tableFrom": "sessions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "sessions_token_unique": { "name": "sessions_token_unique", "nullsNotDistinct": false, "columns": [ "token" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.user_ai_keys": { "name": "user_ai_keys", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "provider": { "name": "provider", "type": "text", "primaryKey": false, "notNull": true }, "encrypted_key": { "name": "encrypted_key", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "user_ai_keys_user_id_users_id_fk": { "name": "user_ai_keys_user_id_users_id_fk", "tableFrom": "user_ai_keys", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.user_follows": { "name": "user_follows", "schema": "", "columns": { "follower_id": { "name": "follower_id", "type": "text", "primaryKey": false, "notNull": true }, "following_id": { "name": "following_id", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "user_follows_follower_id_users_id_fk": { "name": "user_follows_follower_id_users_id_fk", "tableFrom": "user_follows", "tableTo": "users", "columnsFrom": [ "follower_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "user_follows_following_id_users_id_fk": { "name": "user_follows_following_id_users_id_fk", "tableFrom": "user_follows", "tableTo": "users", "columnsFrom": [ "following_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.user_model_prefs": { "name": "user_model_prefs", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "text_provider": { "name": "text_provider", "type": "text", "primaryKey": false, "notNull": false }, "text_model": { "name": "text_model", "type": "text", "primaryKey": false, "notNull": false }, "vision_provider": { "name": "vision_provider", "type": "text", "primaryKey": false, "notNull": false }, "vision_model": { "name": "vision_model", "type": "text", "primaryKey": false, "notNull": false }, "meal_plan_provider": { "name": "meal_plan_provider", "type": "text", "primaryKey": false, "notNull": false }, "meal_plan_model": { "name": "meal_plan_model", "type": "text", "primaryKey": false, "notNull": false }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "user_model_prefs_user_id_users_id_fk": { "name": "user_model_prefs_user_id_users_id_fk", "tableFrom": "user_model_prefs", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "user_model_prefs_user_id_unique": { "name": "user_model_prefs_user_id_unique", "nullsNotDistinct": false, "columns": [ "user_id" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.user_nutrition_goals": { "name": "user_nutrition_goals", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "calories_kcal": { "name": "calories_kcal", "type": "integer", "primaryKey": false, "notNull": false }, "protein_g": { "name": "protein_g", "type": "integer", "primaryKey": false, "notNull": false }, "carbs_g": { "name": "carbs_g", "type": "integer", "primaryKey": false, "notNull": false }, "fat_g": { "name": "fat_g", "type": "integer", "primaryKey": false, "notNull": false }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "user_nutrition_goals_user_id_users_id_fk": { "name": "user_nutrition_goals_user_id_users_id_fk", "tableFrom": "user_nutrition_goals", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "user_nutrition_goals_user_id_unique": { "name": "user_nutrition_goals_user_id_unique", "nullsNotDistinct": false, "columns": [ "user_id" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.users": { "name": "users", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "email_verified": { "name": "email_verified", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "avatar_url": { "name": "avatar_url", "type": "text", "primaryKey": false, "notNull": false }, "bio": { "name": "bio", "type": "text", "primaryKey": false, "notNull": false }, "username": { "name": "username", "type": "text", "primaryKey": false, "notNull": false }, "role": { "name": "role", "type": "user_role", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'user'" }, "tier": { "name": "tier", "type": "tier", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'free'" }, "unit_pref": { "name": "unit_pref", "type": "unit_pref", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'metric'" }, "locale": { "name": "locale", "type": "text", "primaryKey": false, "notNull": true, "default": "'en'" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "users_email_unique": { "name": "users_email_unique", "nullsNotDistinct": false, "columns": [ "email" ] }, "users_username_unique": { "name": "users_username_unique", "nullsNotDistinct": false, "columns": [ "username" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.verifications": { "name": "verifications", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "identifier": { "name": "identifier", "type": "text", "primaryKey": false, "notNull": true }, "value": { "name": "value", "type": "text", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.ingredients": { "name": "ingredients", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "aliases": { "name": "aliases", "type": "text[]", "primaryKey": false, "notNull": true, "default": "'{}'" }, "category": { "name": "category", "type": "text", "primaryKey": false, "notNull": false }, "known_allergens": { "name": "known_allergens", "type": "text[]", "primaryKey": false, "notNull": true, "default": "'{}'" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "ingredients_name_unique": { "name": "ingredients_name_unique", "nullsNotDistinct": false, "columns": [ "name" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.recipe_ingredients": { "name": "recipe_ingredients", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "ingredient_id": { "name": "ingredient_id", "type": "text", "primaryKey": false, "notNull": false }, "raw_name": { "name": "raw_name", "type": "text", "primaryKey": false, "notNull": true }, "quantity": { "name": "quantity", "type": "numeric(10, 4)", "primaryKey": false, "notNull": false }, "unit": { "name": "unit", "type": "text", "primaryKey": false, "notNull": false }, "note": { "name": "note", "type": "text", "primaryKey": false, "notNull": false }, "order": { "name": "order", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 } }, "indexes": {}, "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_ingredient_id_ingredients_id_fk": { "name": "recipe_ingredients_ingredient_id_ingredients_id_fk", "tableFrom": "recipe_ingredients", "tableTo": "ingredients", "columnsFrom": [ "ingredient_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.recipe_notes": { "name": "recipe_notes", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "content": { "name": "content", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "recipe_notes_recipe_id_recipes_id_fk": { "name": "recipe_notes_recipe_id_recipes_id_fk", "tableFrom": "recipe_notes", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "recipe_notes_user_id_users_id_fk": { "name": "recipe_notes_user_id_users_id_fk", "tableFrom": "recipe_notes", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.recipe_photos": { "name": "recipe_photos", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "storage_key": { "name": "storage_key", "type": "text", "primaryKey": false, "notNull": true }, "order": { "name": "order", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "is_cover": { "name": "is_cover", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "recipe_photos_recipe_id_recipes_id_fk": { "name": "recipe_photos_recipe_id_recipes_id_fk", "tableFrom": "recipe_photos", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.recipe_snapshots": { "name": "recipe_snapshots", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "author_id": { "name": "author_id", "type": "text", "primaryKey": false, "notNull": true }, "version": { "name": "version", "type": "integer", "primaryKey": false, "notNull": true }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "snapshot_data": { "name": "snapshot_data", "type": "jsonb", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "recipe_snapshots_recipe_idx": { "name": "recipe_snapshots_recipe_idx", "columns": [ { "expression": "recipe_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "version", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "recipe_snapshots_recipe_id_recipes_id_fk": { "name": "recipe_snapshots_recipe_id_recipes_id_fk", "tableFrom": "recipe_snapshots", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "recipe_snapshots_author_id_users_id_fk": { "name": "recipe_snapshots_author_id_users_id_fk", "tableFrom": "recipe_snapshots", "tableTo": "users", "columnsFrom": [ "author_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.recipe_steps": { "name": "recipe_steps", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "order": { "name": "order", "type": "integer", "primaryKey": false, "notNull": true }, "instruction": { "name": "instruction", "type": "text", "primaryKey": false, "notNull": true }, "timer_seconds": { "name": "timer_seconds", "type": "integer", "primaryKey": false, "notNull": false }, "photo_url": { "name": "photo_url", "type": "text", "primaryKey": false, "notNull": false } }, "indexes": {}, "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.recipe_variations": { "name": "recipe_variations", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "parent_recipe_id": { "name": "parent_recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "child_recipe_id": { "name": "child_recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false }, "ai_generated": { "name": "ai_generated", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "recipe_variations_parent_recipe_id_recipes_id_fk": { "name": "recipe_variations_parent_recipe_id_recipes_id_fk", "tableFrom": "recipe_variations", "tableTo": "recipes", "columnsFrom": [ "parent_recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "recipe_variations_child_recipe_id_recipes_id_fk": { "name": "recipe_variations_child_recipe_id_recipes_id_fk", "tableFrom": "recipe_variations", "tableTo": "recipes", "columnsFrom": [ "child_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": "text", "primaryKey": true, "notNull": true }, "author_id": { "name": "author_id", "type": "text", "primaryKey": false, "notNull": true }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false }, "base_servings": { "name": "base_servings", "type": "integer", "primaryKey": false, "notNull": true, "default": 4 }, "visibility": { "name": "visibility", "type": "visibility", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'private'" }, "source_url": { "name": "source_url", "type": "text", "primaryKey": false, "notNull": false }, "ai_generated": { "name": "ai_generated", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "ai_model": { "name": "ai_model", "type": "text", "primaryKey": false, "notNull": false }, "ai_prompt": { "name": "ai_prompt", "type": "text", "primaryKey": false, "notNull": false }, "dietary_tags": { "name": "dietary_tags", "type": "jsonb", "primaryKey": false, "notNull": false, "default": "'{}'::jsonb" }, "dietary_verified": { "name": "dietary_verified", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "nutrition_data": { "name": "nutrition_data", "type": "jsonb", "primaryKey": false, "notNull": false }, "difficulty": { "name": "difficulty", "type": "difficulty", "typeSchema": "public", "primaryKey": false, "notNull": false }, "prep_mins": { "name": "prep_mins", "type": "integer", "primaryKey": false, "notNull": false }, "cook_mins": { "name": "cook_mins", "type": "integer", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "recipes_author_idx": { "name": "recipes_author_idx", "columns": [ { "expression": "author_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "recipes_visibility_idx": { "name": "recipes_visibility_idx", "columns": [ { "expression": "visibility", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "recipes_author_id_users_id_fk": { "name": "recipes_author_id_users_id_fk", "tableFrom": "recipes", "tableTo": "users", "columnsFrom": [ "author_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.user_allergens": { "name": "user_allergens", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "allergen_tag": { "name": "allergen_tag", "type": "text", "primaryKey": false, "notNull": true } }, "indexes": {}, "foreignKeys": { "user_allergens_user_id_users_id_fk": { "name": "user_allergens_user_id_users_id_fk", "tableFrom": "user_allergens", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.collection_members": { "name": "collection_members", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "collection_id": { "name": "collection_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "role": { "name": "role", "type": "collection_member_role", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'viewer'" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "collection_members_collection_id_collections_id_fk": { "name": "collection_members_collection_id_collections_id_fk", "tableFrom": "collection_members", "tableTo": "collections", "columnsFrom": [ "collection_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "collection_members_user_id_users_id_fk": { "name": "collection_members_user_id_users_id_fk", "tableFrom": "collection_members", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.collection_recipes": { "name": "collection_recipes", "schema": "", "columns": { "collection_id": { "name": "collection_id", "type": "text", "primaryKey": false, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "added_at": { "name": "added_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "collection_recipes_collection_id_collections_id_fk": { "name": "collection_recipes_collection_id_collections_id_fk", "tableFrom": "collection_recipes", "tableTo": "collections", "columnsFrom": [ "collection_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "collection_recipes_recipe_id_recipes_id_fk": { "name": "collection_recipes_recipe_id_recipes_id_fk", "tableFrom": "collection_recipes", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.collections": { "name": "collections", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false }, "is_public": { "name": "is_public", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "collections_user_id_users_id_fk": { "name": "collections_user_id_users_id_fk", "tableFrom": "collections", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.comment_reactions": { "name": "comment_reactions", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "comment_id": { "name": "comment_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "type": { "name": "type", "type": "comment_reaction_type", "typeSchema": "public", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "comment_reactions_comment_idx": { "name": "comment_reactions_comment_idx", "columns": [ { "expression": "comment_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "comment_reactions_comment_id_comments_id_fk": { "name": "comment_reactions_comment_id_comments_id_fk", "tableFrom": "comment_reactions", "tableTo": "comments", "columnsFrom": [ "comment_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "comment_reactions_user_id_users_id_fk": { "name": "comment_reactions_user_id_users_id_fk", "tableFrom": "comment_reactions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.comments": { "name": "comments", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "parent_id": { "name": "parent_id", "type": "text", "primaryKey": false, "notNull": false }, "content": { "name": "content", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "comments_recipe_idx": { "name": "comments_recipe_idx", "columns": [ { "expression": "recipe_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "comments_recipe_id_recipes_id_fk": { "name": "comments_recipe_id_recipes_id_fk", "tableFrom": "comments", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "comments_user_id_users_id_fk": { "name": "comments_user_id_users_id_fk", "tableFrom": "comments", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.cooking_history": { "name": "cooking_history", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "cooked_at": { "name": "cooked_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "servings": { "name": "servings", "type": "integer", "primaryKey": false, "notNull": false }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false } }, "indexes": {}, "foreignKeys": { "cooking_history_user_id_users_id_fk": { "name": "cooking_history_user_id_users_id_fk", "tableFrom": "cooking_history", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "cooking_history_recipe_id_recipes_id_fk": { "name": "cooking_history_recipe_id_recipes_id_fk", "tableFrom": "cooking_history", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.favorites": { "name": "favorites", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "favorites_user_id_users_id_fk": { "name": "favorites_user_id_users_id_fk", "tableFrom": "favorites", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "favorites_recipe_id_recipes_id_fk": { "name": "favorites_recipe_id_recipes_id_fk", "tableFrom": "favorites", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.feed_items": { "name": "feed_items", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "type": { "name": "type", "type": "feed_item_type", "typeSchema": "public", "primaryKey": false, "notNull": true }, "actor_id": { "name": "actor_id", "type": "text", "primaryKey": false, "notNull": true }, "subject_id": { "name": "subject_id", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "feed_items_user_idx": { "name": "feed_items_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": { "feed_items_user_id_users_id_fk": { "name": "feed_items_user_id_users_id_fk", "tableFrom": "feed_items", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "feed_items_actor_id_users_id_fk": { "name": "feed_items_actor_id_users_id_fk", "tableFrom": "feed_items", "tableTo": "users", "columnsFrom": [ "actor_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.ratings": { "name": "ratings", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "score": { "name": "score", "type": "integer", "primaryKey": false, "notNull": true }, "review_text": { "name": "review_text", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "ratings_recipe_id_recipes_id_fk": { "name": "ratings_recipe_id_recipes_id_fk", "tableFrom": "ratings", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "ratings_user_id_users_id_fk": { "name": "ratings_user_id_users_id_fk", "tableFrom": "ratings", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.meal_plan_entries": { "name": "meal_plan_entries", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "meal_plan_id": { "name": "meal_plan_id", "type": "text", "primaryKey": false, "notNull": true }, "day": { "name": "day", "type": "weekday", "typeSchema": "public", "primaryKey": false, "notNull": true }, "meal_type": { "name": "meal_type", "type": "meal_type", "typeSchema": "public", "primaryKey": false, "notNull": true }, "recipe_id": { "name": "recipe_id", "type": "text", "primaryKey": false, "notNull": false }, "servings": { "name": "servings", "type": "integer", "primaryKey": false, "notNull": true, "default": 2 }, "note": { "name": "note", "type": "text", "primaryKey": false, "notNull": false } }, "indexes": {}, "foreignKeys": { "meal_plan_entries_meal_plan_id_meal_plans_id_fk": { "name": "meal_plan_entries_meal_plan_id_meal_plans_id_fk", "tableFrom": "meal_plan_entries", "tableTo": "meal_plans", "columnsFrom": [ "meal_plan_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "meal_plan_entries_recipe_id_recipes_id_fk": { "name": "meal_plan_entries_recipe_id_recipes_id_fk", "tableFrom": "meal_plan_entries", "tableTo": "recipes", "columnsFrom": [ "recipe_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.meal_plans": { "name": "meal_plans", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "week_start": { "name": "week_start", "type": "date", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "meal_plans_user_id_users_id_fk": { "name": "meal_plans_user_id_users_id_fk", "tableFrom": "meal_plans", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.pantry_items": { "name": "pantry_items", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "ingredient_id": { "name": "ingredient_id", "type": "text", "primaryKey": false, "notNull": false }, "raw_name": { "name": "raw_name", "type": "text", "primaryKey": false, "notNull": true }, "quantity": { "name": "quantity", "type": "numeric(10, 4)", "primaryKey": false, "notNull": false }, "unit": { "name": "unit", "type": "text", "primaryKey": false, "notNull": false }, "expires_at": { "name": "expires_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "pantry_items_user_id_users_id_fk": { "name": "pantry_items_user_id_users_id_fk", "tableFrom": "pantry_items", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "pantry_items_ingredient_id_ingredients_id_fk": { "name": "pantry_items_ingredient_id_ingredients_id_fk", "tableFrom": "pantry_items", "tableTo": "ingredients", "columnsFrom": [ "ingredient_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": "text", "primaryKey": true, "notNull": true }, "list_id": { "name": "list_id", "type": "text", "primaryKey": false, "notNull": true }, "ingredient_id": { "name": "ingredient_id", "type": "text", "primaryKey": false, "notNull": false }, "raw_name": { "name": "raw_name", "type": "text", "primaryKey": false, "notNull": true }, "quantity": { "name": "quantity", "type": "numeric(10, 4)", "primaryKey": false, "notNull": false }, "unit": { "name": "unit", "type": "text", "primaryKey": false, "notNull": false }, "aisle": { "name": "aisle", "type": "text", "primaryKey": false, "notNull": false }, "checked": { "name": "checked", "type": "boolean", "primaryKey": false, "notNull": true, "default": false } }, "indexes": {}, "foreignKeys": { "shopping_list_items_list_id_shopping_lists_id_fk": { "name": "shopping_list_items_list_id_shopping_lists_id_fk", "tableFrom": "shopping_list_items", "tableTo": "shopping_lists", "columnsFrom": [ "list_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "shopping_list_items_ingredient_id_ingredients_id_fk": { "name": "shopping_list_items_ingredient_id_ingredients_id_fk", "tableFrom": "shopping_list_items", "tableTo": "ingredients", "columnsFrom": [ "ingredient_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": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": false }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "generated_at": { "name": "generated_at", "type": "timestamp", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "shopping_lists_user_id_users_id_fk": { "name": "shopping_lists_user_id_users_id_fk", "tableFrom": "shopping_lists", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.audit_logs": { "name": "audit_logs", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": false }, "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": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "audit_logs_created_idx": { "name": "audit_logs_created_idx", "columns": [ { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "audit_logs_user_id_users_id_fk": { "name": "audit_logs_user_id_users_id_fk", "tableFrom": "audit_logs", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.tier_definitions": { "name": "tier_definitions", "schema": "", "columns": { "tier": { "name": "tier", "type": "tier", "typeSchema": "public", "primaryKey": true, "notNull": true }, "max_recipes": { "name": "max_recipes", "type": "integer", "primaryKey": false, "notNull": true }, "ai_calls_per_month": { "name": "ai_calls_per_month", "type": "integer", "primaryKey": false, "notNull": true }, "storage_mb": { "name": "storage_mb", "type": "integer", "primaryKey": false, "notNull": true }, "max_public_recipes": { "name": "max_public_recipes", "type": "integer", "primaryKey": false, "notNull": true } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.user_usage": { "name": "user_usage", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "month": { "name": "month", "type": "text", "primaryKey": false, "notNull": true }, "ai_calls_used": { "name": "ai_calls_used", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "recipe_count": { "name": "recipe_count", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "storage_used_mb": { "name": "storage_used_mb", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 } }, "indexes": { "user_usage_user_month_idx": { "name": "user_usage_user_month_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "month", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "user_usage_user_id_users_id_fk": { "name": "user_usage_user_id_users_id_fk", "tableFrom": "user_usage", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "user_usage_user_month_uniq": { "name": "user_usage_user_month_uniq", "nullsNotDistinct": false, "columns": [ "user_id", "month" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.webhook_deliveries": { "name": "webhook_deliveries", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "webhook_id": { "name": "webhook_id", "type": "text", "primaryKey": false, "notNull": true }, "event": { "name": "event", "type": "text", "primaryKey": false, "notNull": true }, "payload": { "name": "payload", "type": "jsonb", "primaryKey": false, "notNull": false }, "status_code": { "name": "status_code", "type": "integer", "primaryKey": false, "notNull": false }, "success": { "name": "success", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "attempts": { "name": "attempts", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "webhook_deliveries_webhook_id_webhooks_id_fk": { "name": "webhook_deliveries_webhook_id_webhooks_id_fk", "tableFrom": "webhook_deliveries", "tableTo": "webhooks", "columnsFrom": [ "webhook_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.webhooks": { "name": "webhooks", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "text", "primaryKey": false, "notNull": true }, "url": { "name": "url", "type": "text", "primaryKey": false, "notNull": true }, "events": { "name": "events", "type": "text[]", "primaryKey": false, "notNull": true, "default": "'{}'" }, "secret": { "name": "secret", "type": "text", "primaryKey": false, "notNull": true }, "active": { "name": "active", "type": "boolean", "primaryKey": false, "notNull": true, "default": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "webhooks_user_id_users_id_fk": { "name": "webhooks_user_id_users_id_fk", "tableFrom": "webhooks", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": { "public.tier": { "name": "tier", "schema": "public", "values": [ "free", "pro" ] }, "public.unit_pref": { "name": "unit_pref", "schema": "public", "values": [ "metric", "imperial" ] }, "public.user_role": { "name": "user_role", "schema": "public", "values": [ "user", "moderator", "admin" ] }, "public.difficulty": { "name": "difficulty", "schema": "public", "values": [ "easy", "medium", "hard" ] }, "public.visibility": { "name": "visibility", "schema": "public", "values": [ "private", "unlisted", "public" ] }, "public.collection_member_role": { "name": "collection_member_role", "schema": "public", "values": [ "viewer", "editor" ] }, "public.comment_reaction_type": { "name": "comment_reaction_type", "schema": "public", "values": [ "like", "love", "laugh", "wow", "sad", "fire" ] }, "public.feed_item_type": { "name": "feed_item_type", "schema": "public", "values": [ "new_recipe", "new_follow", "recipe_rated" ] }, "public.meal_type": { "name": "meal_type", "schema": "public", "values": [ "breakfast", "lunch", "dinner", "snack" ] }, "public.weekday": { "name": "weekday", "schema": "public", "values": [ "mon", "tue", "wed", "thu", "fri", "sat", "sun" ] } }, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }