{ "id": "a342938b-8d10-4f00-bd15-d13b7a1e5551", "prevId": "4b01f839-a5ff-416c-826c-1e37e76d0a78", "version": "7", "dialect": "postgresql", "tables": { "public.api_keys": { "name": "api_keys", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "key_hash": { "name": "key_hash", "type": "text", "primaryKey": false, "notNull": true }, "key_prefix": { "name": "key_prefix", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "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": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.categories": { "name": "categories", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "icon": { "name": "icon", "type": "text", "primaryKey": false, "notNull": true, "default": "'package'" }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "categories_user_id_users_id_fk": { "name": "categories_user_id_users_id_fk", "tableFrom": "categories", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "categories_user_id_name_unique": { "name": "categories_user_id_name_unique", "nullsNotDistinct": false, "columns": [ "user_id", "name" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.global_item_tags": { "name": "global_item_tags", "schema": "", "columns": { "global_item_id": { "name": "global_item_id", "type": "integer", "primaryKey": false, "notNull": true }, "tag_id": { "name": "tag_id", "type": "integer", "primaryKey": false, "notNull": true } }, "indexes": {}, "foreignKeys": { "global_item_tags_global_item_id_global_items_id_fk": { "name": "global_item_tags_global_item_id_global_items_id_fk", "tableFrom": "global_item_tags", "tableTo": "global_items", "columnsFrom": [ "global_item_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "global_item_tags_tag_id_tags_id_fk": { "name": "global_item_tags_tag_id_tags_id_fk", "tableFrom": "global_item_tags", "tableTo": "tags", "columnsFrom": [ "tag_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "global_item_tags_global_item_id_tag_id_pk": { "name": "global_item_tags_global_item_id_tag_id_pk", "columns": [ "global_item_id", "tag_id" ] } }, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.global_items": { "name": "global_items", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "brand": { "name": "brand", "type": "text", "primaryKey": false, "notNull": true }, "model": { "name": "model", "type": "text", "primaryKey": false, "notNull": true }, "category": { "name": "category", "type": "text", "primaryKey": false, "notNull": false }, "weight_grams": { "name": "weight_grams", "type": "double precision", "primaryKey": false, "notNull": false }, "price_cents": { "name": "price_cents", "type": "integer", "primaryKey": false, "notNull": false }, "image_url": { "name": "image_url", "type": "text", "primaryKey": false, "notNull": false }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false }, "source_url": { "name": "source_url", "type": "text", "primaryKey": false, "notNull": false }, "image_credit": { "name": "image_credit", "type": "text", "primaryKey": false, "notNull": false }, "image_source_url": { "name": "image_source_url", "type": "text", "primaryKey": false, "notNull": false }, "dominant_color": { "name": "dominant_color", "type": "text", "primaryKey": false, "notNull": false }, "crop_zoom": { "name": "crop_zoom", "type": "double precision", "primaryKey": false, "notNull": false }, "crop_x": { "name": "crop_x", "type": "double precision", "primaryKey": false, "notNull": false }, "crop_y": { "name": "crop_y", "type": "double precision", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "global_items_brand_model_unique": { "name": "global_items_brand_model_unique", "nullsNotDistinct": false, "columns": [ "brand", "model" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.items": { "name": "items", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "weight_grams": { "name": "weight_grams", "type": "double precision", "primaryKey": false, "notNull": false }, "price_cents": { "name": "price_cents", "type": "integer", "primaryKey": false, "notNull": false }, "category_id": { "name": "category_id", "type": "integer", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "product_url": { "name": "product_url", "type": "text", "primaryKey": false, "notNull": false }, "image_filename": { "name": "image_filename", "type": "text", "primaryKey": false, "notNull": false }, "image_source_url": { "name": "image_source_url", "type": "text", "primaryKey": false, "notNull": false }, "quantity": { "name": "quantity", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "global_item_id": { "name": "global_item_id", "type": "integer", "primaryKey": false, "notNull": false }, "purchase_price_cents": { "name": "purchase_price_cents", "type": "integer", "primaryKey": false, "notNull": false }, "brand": { "name": "brand", "type": "text", "primaryKey": false, "notNull": false }, "dominant_color": { "name": "dominant_color", "type": "text", "primaryKey": false, "notNull": false }, "crop_zoom": { "name": "crop_zoom", "type": "double precision", "primaryKey": false, "notNull": false }, "crop_x": { "name": "crop_x", "type": "double precision", "primaryKey": false, "notNull": false }, "crop_y": { "name": "crop_y", "type": "double precision", "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": { "items_category_id_categories_id_fk": { "name": "items_category_id_categories_id_fk", "tableFrom": "items", "tableTo": "categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "items_user_id_users_id_fk": { "name": "items_user_id_users_id_fk", "tableFrom": "items", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "items_global_item_id_global_items_id_fk": { "name": "items_global_item_id_global_items_id_fk", "tableFrom": "items", "tableTo": "global_items", "columnsFrom": [ "global_item_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.oauth_clients": { "name": "oauth_clients", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "client_id": { "name": "client_id", "type": "text", "primaryKey": false, "notNull": true }, "client_name": { "name": "client_name", "type": "text", "primaryKey": false, "notNull": false }, "redirect_uris": { "name": "redirect_uris", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "oauth_clients_client_id_unique": { "name": "oauth_clients_client_id_unique", "nullsNotDistinct": false, "columns": [ "client_id" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.oauth_codes": { "name": "oauth_codes", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "code": { "name": "code", "type": "text", "primaryKey": false, "notNull": true }, "client_id": { "name": "client_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "code_challenge": { "name": "code_challenge", "type": "text", "primaryKey": false, "notNull": true }, "code_challenge_method": { "name": "code_challenge_method", "type": "text", "primaryKey": false, "notNull": true, "default": "'S256'" }, "redirect_uri": { "name": "redirect_uri", "type": "text", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp", "primaryKey": false, "notNull": true }, "used": { "name": "used", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 } }, "indexes": {}, "foreignKeys": { "oauth_codes_user_id_users_id_fk": { "name": "oauth_codes_user_id_users_id_fk", "tableFrom": "oauth_codes", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "oauth_codes_code_unique": { "name": "oauth_codes_code_unique", "nullsNotDistinct": false, "columns": [ "code" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.oauth_tokens": { "name": "oauth_tokens", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "access_token_hash": { "name": "access_token_hash", "type": "text", "primaryKey": false, "notNull": true }, "refresh_token_hash": { "name": "refresh_token_hash", "type": "text", "primaryKey": false, "notNull": true }, "client_id": { "name": "client_id", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp", "primaryKey": false, "notNull": true }, "refresh_expires_at": { "name": "refresh_expires_at", "type": "timestamp", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "oauth_tokens_user_id_users_id_fk": { "name": "oauth_tokens_user_id_users_id_fk", "tableFrom": "oauth_tokens", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "oauth_tokens_access_token_hash_unique": { "name": "oauth_tokens_access_token_hash_unique", "nullsNotDistinct": false, "columns": [ "access_token_hash" ] }, "oauth_tokens_refresh_token_hash_unique": { "name": "oauth_tokens_refresh_token_hash_unique", "nullsNotDistinct": false, "columns": [ "refresh_token_hash" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.settings": { "name": "settings", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "key": { "name": "key", "type": "text", "primaryKey": false, "notNull": true }, "value": { "name": "value", "type": "text", "primaryKey": false, "notNull": true } }, "indexes": {}, "foreignKeys": { "settings_user_id_users_id_fk": { "name": "settings_user_id_users_id_fk", "tableFrom": "settings", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "settings_user_id_key_pk": { "name": "settings_user_id_key_pk", "columns": [ "user_id", "key" ] } }, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.setup_items": { "name": "setup_items", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "setup_id": { "name": "setup_id", "type": "integer", "primaryKey": false, "notNull": true }, "item_id": { "name": "item_id", "type": "integer", "primaryKey": false, "notNull": true }, "classification": { "name": "classification", "type": "text", "primaryKey": false, "notNull": true, "default": "'base'" } }, "indexes": {}, "foreignKeys": { "setup_items_setup_id_setups_id_fk": { "name": "setup_items_setup_id_setups_id_fk", "tableFrom": "setup_items", "tableTo": "setups", "columnsFrom": [ "setup_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "setup_items_item_id_items_id_fk": { "name": "setup_items_item_id_items_id_fk", "tableFrom": "setup_items", "tableTo": "items", "columnsFrom": [ "item_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.setups": { "name": "setups", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, "notNull": true }, "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": { "setups_user_id_users_id_fk": { "name": "setups_user_id_users_id_fk", "tableFrom": "setups", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.tags": { "name": "tags", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "tags_name_unique": { "name": "tags_name_unique", "nullsNotDistinct": false, "columns": [ "name" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.thread_candidates": { "name": "thread_candidates", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "thread_id": { "name": "thread_id", "type": "integer", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "weight_grams": { "name": "weight_grams", "type": "double precision", "primaryKey": false, "notNull": false }, "price_cents": { "name": "price_cents", "type": "integer", "primaryKey": false, "notNull": false }, "category_id": { "name": "category_id", "type": "integer", "primaryKey": false, "notNull": true }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "product_url": { "name": "product_url", "type": "text", "primaryKey": false, "notNull": false }, "image_filename": { "name": "image_filename", "type": "text", "primaryKey": false, "notNull": false }, "image_source_url": { "name": "image_source_url", "type": "text", "primaryKey": false, "notNull": false }, "dominant_color": { "name": "dominant_color", "type": "text", "primaryKey": false, "notNull": false }, "crop_zoom": { "name": "crop_zoom", "type": "double precision", "primaryKey": false, "notNull": false }, "crop_x": { "name": "crop_x", "type": "double precision", "primaryKey": false, "notNull": false }, "crop_y": { "name": "crop_y", "type": "double precision", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'researching'" }, "pros": { "name": "pros", "type": "text", "primaryKey": false, "notNull": false }, "cons": { "name": "cons", "type": "text", "primaryKey": false, "notNull": false }, "sort_order": { "name": "sort_order", "type": "double precision", "primaryKey": false, "notNull": true, "default": 0 }, "global_item_id": { "name": "global_item_id", "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": {}, "foreignKeys": { "thread_candidates_thread_id_threads_id_fk": { "name": "thread_candidates_thread_id_threads_id_fk", "tableFrom": "thread_candidates", "tableTo": "threads", "columnsFrom": [ "thread_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "thread_candidates_category_id_categories_id_fk": { "name": "thread_candidates_category_id_categories_id_fk", "tableFrom": "thread_candidates", "tableTo": "categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "thread_candidates_global_item_id_global_items_id_fk": { "name": "thread_candidates_global_item_id_global_items_id_fk", "tableFrom": "thread_candidates", "tableTo": "global_items", "columnsFrom": [ "global_item_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.threads": { "name": "threads", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'active'" }, "resolved_candidate_id": { "name": "resolved_candidate_id", "type": "integer", "primaryKey": false, "notNull": false }, "category_id": { "name": "category_id", "type": "integer", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "integer", "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": { "threads_category_id_categories_id_fk": { "name": "threads_category_id_categories_id_fk", "tableFrom": "threads", "tableTo": "categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "threads_user_id_users_id_fk": { "name": "threads_user_id_users_id_fk", "tableFrom": "threads", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.users": { "name": "users", "schema": "", "columns": { "id": { "name": "id", "type": "serial", "primaryKey": true, "notNull": true }, "logto_sub": { "name": "logto_sub", "type": "text", "primaryKey": false, "notNull": true }, "display_name": { "name": "display_name", "type": "text", "primaryKey": false, "notNull": false }, "avatar_url": { "name": "avatar_url", "type": "text", "primaryKey": false, "notNull": false }, "bio": { "name": "bio", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "users_logto_sub_unique": { "name": "users_logto_sub_unique", "nullsNotDistinct": false, "columns": [ "logto_sub" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": {}, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }