{ "id": "fbb59211-0980-4bdc-bc56-29d9f74ae1d4", "prevId": "dda6c989-cce9-4dbc-91b4-5cd5cd2dd8f1", "version": "7", "dialect": "postgresql", "tables": { "public.ad_hoc_notifications": { "name": "ad_hoc_notifications", "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 }, "creator_member_id": { "name": "creator_member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "assignee_member_id": { "name": "assignee_member_id", "type": "uuid", "primaryKey": false, "notNull": false }, "original_request_text": { "name": "original_request_text", "type": "text", "primaryKey": false, "notNull": true }, "notification_text": { "name": "notification_text", "type": "text", "primaryKey": false, "notNull": true }, "timezone": { "name": "timezone", "type": "text", "primaryKey": false, "notNull": true }, "scheduled_for": { "name": "scheduled_for", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "time_precision": { "name": "time_precision", "type": "text", "primaryKey": false, "notNull": true }, "delivery_mode": { "name": "delivery_mode", "type": "text", "primaryKey": false, "notNull": true }, "dm_recipient_member_ids": { "name": "dm_recipient_member_ids", "type": "jsonb", "primaryKey": false, "notNull": true, "default": "'[]'::jsonb" }, "friendly_tag_assignee": { "name": "friendly_tag_assignee", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'scheduled'" }, "source_telegram_chat_id": { "name": "source_telegram_chat_id", "type": "text", "primaryKey": false, "notNull": false }, "source_telegram_thread_id": { "name": "source_telegram_thread_id", "type": "text", "primaryKey": false, "notNull": false }, "sent_at": { "name": "sent_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "cancelled_at": { "name": "cancelled_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "cancelled_by_member_id": { "name": "cancelled_by_member_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": { "ad_hoc_notifications_due_idx": { "name": "ad_hoc_notifications_due_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "scheduled_for", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "ad_hoc_notifications_household_status_idx": { "name": "ad_hoc_notifications_household_status_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "scheduled_for", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "ad_hoc_notifications_creator_idx": { "name": "ad_hoc_notifications_creator_idx", "columns": [ { "expression": "creator_member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "ad_hoc_notifications_assignee_idx": { "name": "ad_hoc_notifications_assignee_idx", "columns": [ { "expression": "assignee_member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "ad_hoc_notifications_household_id_households_id_fk": { "name": "ad_hoc_notifications_household_id_households_id_fk", "tableFrom": "ad_hoc_notifications", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "ad_hoc_notifications_creator_member_id_members_id_fk": { "name": "ad_hoc_notifications_creator_member_id_members_id_fk", "tableFrom": "ad_hoc_notifications", "tableTo": "members", "columnsFrom": ["creator_member_id"], "columnsTo": ["id"], "onDelete": "restrict", "onUpdate": "no action" }, "ad_hoc_notifications_assignee_member_id_members_id_fk": { "name": "ad_hoc_notifications_assignee_member_id_members_id_fk", "tableFrom": "ad_hoc_notifications", "tableTo": "members", "columnsFrom": ["assignee_member_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, "ad_hoc_notifications_cancelled_by_member_id_members_id_fk": { "name": "ad_hoc_notifications_cancelled_by_member_id_members_id_fk", "tableFrom": "ad_hoc_notifications", "tableTo": "members", "columnsFrom": ["cancelled_by_member_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.anonymous_messages": { "name": "anonymous_messages", "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 }, "submitted_by_member_id": { "name": "submitted_by_member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "raw_text": { "name": "raw_text", "type": "text", "primaryKey": false, "notNull": true }, "sanitized_text": { "name": "sanitized_text", "type": "text", "primaryKey": false, "notNull": false }, "moderation_status": { "name": "moderation_status", "type": "text", "primaryKey": false, "notNull": true }, "moderation_reason": { "name": "moderation_reason", "type": "text", "primaryKey": false, "notNull": false }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_message_id": { "name": "telegram_message_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_update_id": { "name": "telegram_update_id", "type": "text", "primaryKey": false, "notNull": true }, "posted_chat_id": { "name": "posted_chat_id", "type": "text", "primaryKey": false, "notNull": false }, "posted_thread_id": { "name": "posted_thread_id", "type": "text", "primaryKey": false, "notNull": false }, "posted_message_id": { "name": "posted_message_id", "type": "text", "primaryKey": false, "notNull": false }, "failure_reason": { "name": "failure_reason", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "posted_at": { "name": "posted_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false } }, "indexes": { "anonymous_messages_household_tg_update_unique": { "name": "anonymous_messages_household_tg_update_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_update_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "anonymous_messages_member_created_idx": { "name": "anonymous_messages_member_created_idx", "columns": [ { "expression": "submitted_by_member_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "anonymous_messages_status_created_idx": { "name": "anonymous_messages_status_created_idx", "columns": [ { "expression": "moderation_status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "anonymous_messages_household_id_households_id_fk": { "name": "anonymous_messages_household_id_households_id_fk", "tableFrom": "anonymous_messages", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "anonymous_messages_submitted_by_member_id_members_id_fk": { "name": "anonymous_messages_submitted_by_member_id_members_id_fk", "tableFrom": "anonymous_messages", "tableTo": "members", "columnsFrom": ["submitted_by_member_id"], "columnsTo": ["id"], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.billing_cycle_exchange_rates": { "name": "billing_cycle_exchange_rates", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": true }, "source_currency": { "name": "source_currency", "type": "text", "primaryKey": false, "notNull": true }, "target_currency": { "name": "target_currency", "type": "text", "primaryKey": false, "notNull": true }, "rate_micros": { "name": "rate_micros", "type": "bigint", "primaryKey": false, "notNull": true }, "effective_date": { "name": "effective_date", "type": "date", "primaryKey": false, "notNull": true }, "source": { "name": "source", "type": "text", "primaryKey": false, "notNull": true, "default": "'nbg'" }, "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": { "billing_cycle_exchange_rates_cycle_pair_unique": { "name": "billing_cycle_exchange_rates_cycle_pair_unique", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "source_currency", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "target_currency", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "billing_cycle_exchange_rates_cycle_idx": { "name": "billing_cycle_exchange_rates_cycle_idx", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "billing_cycle_exchange_rates_cycle_id_billing_cycles_id_fk": { "name": "billing_cycle_exchange_rates_cycle_id_billing_cycles_id_fk", "tableFrom": "billing_cycle_exchange_rates", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.billing_cycles": { "name": "billing_cycles", "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 }, "period": { "name": "period", "type": "text", "primaryKey": false, "notNull": true }, "currency": { "name": "currency", "type": "text", "primaryKey": false, "notNull": true }, "started_at": { "name": "started_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "closed_at": { "name": "closed_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": { "billing_cycles_household_period_unique": { "name": "billing_cycles_household_period_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "period", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "billing_cycles_household_period_idx": { "name": "billing_cycles_household_period_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "period", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "billing_cycles_household_id_households_id_fk": { "name": "billing_cycles_household_id_households_id_fk", "tableFrom": "billing_cycles", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.household_billing_settings": { "name": "household_billing_settings", "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 }, "settlement_currency": { "name": "settlement_currency", "type": "text", "primaryKey": false, "notNull": true, "default": "'GEL'" }, "payment_balance_adjustment_policy": { "name": "payment_balance_adjustment_policy", "type": "text", "primaryKey": false, "notNull": true, "default": "'utilities'" }, "rent_amount_minor": { "name": "rent_amount_minor", "type": "bigint", "primaryKey": false, "notNull": false }, "rent_currency": { "name": "rent_currency", "type": "text", "primaryKey": false, "notNull": true, "default": "'USD'" }, "rent_due_day": { "name": "rent_due_day", "type": "integer", "primaryKey": false, "notNull": true, "default": 20 }, "rent_warning_day": { "name": "rent_warning_day", "type": "integer", "primaryKey": false, "notNull": true, "default": 17 }, "utilities_due_day": { "name": "utilities_due_day", "type": "integer", "primaryKey": false, "notNull": true, "default": 4 }, "utilities_reminder_day": { "name": "utilities_reminder_day", "type": "integer", "primaryKey": false, "notNull": true, "default": 3 }, "timezone": { "name": "timezone", "type": "text", "primaryKey": false, "notNull": true, "default": "'Asia/Tbilisi'" }, "rent_payment_destinations": { "name": "rent_payment_destinations", "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": { "household_billing_settings_household_unique": { "name": "household_billing_settings_household_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "household_billing_settings_household_id_households_id_fk": { "name": "household_billing_settings_household_id_households_id_fk", "tableFrom": "household_billing_settings", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.household_join_tokens": { "name": "household_join_tokens", "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 }, "token": { "name": "token", "type": "text", "primaryKey": false, "notNull": true }, "created_by_telegram_user_id": { "name": "created_by_telegram_user_id", "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": { "household_join_tokens_household_unique": { "name": "household_join_tokens_household_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "household_join_tokens_token_unique": { "name": "household_join_tokens_token_unique", "columns": [ { "expression": "token", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "household_join_tokens_household_id_households_id_fk": { "name": "household_join_tokens_household_id_households_id_fk", "tableFrom": "household_join_tokens", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.household_pending_members": { "name": "household_pending_members", "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 }, "telegram_user_id": { "name": "telegram_user_id", "type": "text", "primaryKey": false, "notNull": true }, "display_name": { "name": "display_name", "type": "text", "primaryKey": false, "notNull": true }, "username": { "name": "username", "type": "text", "primaryKey": false, "notNull": false }, "language_code": { "name": "language_code", "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": { "household_pending_members_household_user_unique": { "name": "household_pending_members_household_user_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "household_pending_members_telegram_user_idx": { "name": "household_pending_members_telegram_user_idx", "columns": [ { "expression": "telegram_user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "household_pending_members_household_id_households_id_fk": { "name": "household_pending_members_household_id_households_id_fk", "tableFrom": "household_pending_members", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.household_telegram_chats": { "name": "household_telegram_chats", "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 }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_chat_type": { "name": "telegram_chat_type", "type": "text", "primaryKey": false, "notNull": true }, "title": { "name": "title", "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": { "household_telegram_chats_household_unique": { "name": "household_telegram_chats_household_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "household_telegram_chats_chat_unique": { "name": "household_telegram_chats_chat_unique", "columns": [ { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "household_telegram_chats_household_id_households_id_fk": { "name": "household_telegram_chats_household_id_households_id_fk", "tableFrom": "household_telegram_chats", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.household_topic_bindings": { "name": "household_topic_bindings", "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 }, "role": { "name": "role", "type": "text", "primaryKey": false, "notNull": true }, "telegram_thread_id": { "name": "telegram_thread_id", "type": "text", "primaryKey": false, "notNull": true }, "topic_name": { "name": "topic_name", "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": { "household_topic_bindings_household_role_unique": { "name": "household_topic_bindings_household_role_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "role", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "household_topic_bindings_household_thread_unique": { "name": "household_topic_bindings_household_thread_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_thread_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "household_topic_bindings_household_role_idx": { "name": "household_topic_bindings_household_role_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "role", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "household_topic_bindings_household_id_households_id_fk": { "name": "household_topic_bindings_household_id_households_id_fk", "tableFrom": "household_topic_bindings", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.household_utility_categories": { "name": "household_utility_categories", "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 }, "slug": { "name": "slug", "type": "text", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "sort_order": { "name": "sort_order", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "is_active": { "name": "is_active", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "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": { "household_utility_categories_household_slug_unique": { "name": "household_utility_categories_household_slug_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "slug", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "household_utility_categories_household_sort_idx": { "name": "household_utility_categories_household_sort_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "sort_order", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "household_utility_categories_household_id_households_id_fk": { "name": "household_utility_categories_household_id_households_id_fk", "tableFrom": "household_utility_categories", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "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 }, "default_locale": { "name": "default_locale", "type": "text", "primaryKey": false, "notNull": true, "default": "'ru'" }, "assistant_context": { "name": "assistant_context", "type": "text", "primaryKey": false, "notNull": false }, "assistant_tone": { "name": "assistant_tone", "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.member_absence_policies": { "name": "member_absence_policies", "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 }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "effective_from_period": { "name": "effective_from_period", "type": "text", "primaryKey": false, "notNull": true }, "policy": { "name": "policy", "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": { "member_absence_policies_household_member_period_unique": { "name": "member_absence_policies_household_member_period_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "effective_from_period", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "member_absence_policies_household_member_idx": { "name": "member_absence_policies_household_member_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "member_absence_policies_household_id_households_id_fk": { "name": "member_absence_policies_household_id_households_id_fk", "tableFrom": "member_absence_policies", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "member_absence_policies_member_id_members_id_fk": { "name": "member_absence_policies_member_id_members_id_fk", "tableFrom": "member_absence_policies", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.members": { "name": "members", "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 }, "telegram_user_id": { "name": "telegram_user_id", "type": "text", "primaryKey": false, "notNull": true }, "display_name": { "name": "display_name", "type": "text", "primaryKey": false, "notNull": true }, "lifecycle_status": { "name": "lifecycle_status", "type": "text", "primaryKey": false, "notNull": true, "default": "'active'" }, "preferred_locale": { "name": "preferred_locale", "type": "text", "primaryKey": false, "notNull": false }, "rent_share_weight": { "name": "rent_share_weight", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "is_admin": { "name": "is_admin", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "joined_at": { "name": "joined_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "members_household_idx": { "name": "members_household_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "members_household_tg_user_unique": { "name": "members_household_tg_user_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "members_household_id_households_id_fk": { "name": "members_household_id_households_id_fk", "tableFrom": "members", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.payment_confirmations": { "name": "payment_confirmations", "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 }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": false }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": false }, "sender_telegram_user_id": { "name": "sender_telegram_user_id", "type": "text", "primaryKey": false, "notNull": true }, "raw_text": { "name": "raw_text", "type": "text", "primaryKey": false, "notNull": true }, "normalized_text": { "name": "normalized_text", "type": "text", "primaryKey": false, "notNull": true }, "detected_kind": { "name": "detected_kind", "type": "text", "primaryKey": false, "notNull": false }, "explicit_amount_minor": { "name": "explicit_amount_minor", "type": "bigint", "primaryKey": false, "notNull": false }, "explicit_currency": { "name": "explicit_currency", "type": "text", "primaryKey": false, "notNull": false }, "resolved_amount_minor": { "name": "resolved_amount_minor", "type": "bigint", "primaryKey": false, "notNull": false }, "resolved_currency": { "name": "resolved_currency", "type": "text", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true }, "review_reason": { "name": "review_reason", "type": "text", "primaryKey": false, "notNull": false }, "attachment_count": { "name": "attachment_count", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_message_id": { "name": "telegram_message_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_thread_id": { "name": "telegram_thread_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_update_id": { "name": "telegram_update_id", "type": "text", "primaryKey": false, "notNull": true }, "message_sent_at": { "name": "message_sent_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": { "payment_confirmations_household_tg_message_unique": { "name": "payment_confirmations_household_tg_message_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_message_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "payment_confirmations_household_tg_update_unique": { "name": "payment_confirmations_household_tg_update_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_update_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "payment_confirmations_household_status_idx": { "name": "payment_confirmations_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": {} }, "payment_confirmations_member_created_idx": { "name": "payment_confirmations_member_created_idx", "columns": [ { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "payment_confirmations_household_id_households_id_fk": { "name": "payment_confirmations_household_id_households_id_fk", "tableFrom": "payment_confirmations", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "payment_confirmations_cycle_id_billing_cycles_id_fk": { "name": "payment_confirmations_cycle_id_billing_cycles_id_fk", "tableFrom": "payment_confirmations", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, "payment_confirmations_member_id_members_id_fk": { "name": "payment_confirmations_member_id_members_id_fk", "tableFrom": "payment_confirmations", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.payment_purchase_allocations": { "name": "payment_purchase_allocations", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "payment_record_id": { "name": "payment_record_id", "type": "uuid", "primaryKey": false, "notNull": true }, "purchase_id": { "name": "purchase_id", "type": "uuid", "primaryKey": false, "notNull": true }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "amount_minor": { "name": "amount_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "payment_purchase_allocations_payment_idx": { "name": "payment_purchase_allocations_payment_idx", "columns": [ { "expression": "payment_record_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "payment_purchase_allocations_purchase_member_idx": { "name": "payment_purchase_allocations_purchase_member_idx", "columns": [ { "expression": "purchase_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "payment_purchase_allocations_payment_record_id_payment_records_id_fk": { "name": "payment_purchase_allocations_payment_record_id_payment_records_id_fk", "tableFrom": "payment_purchase_allocations", "tableTo": "payment_records", "columnsFrom": ["payment_record_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "payment_purchase_allocations_purchase_id_purchase_messages_id_fk": { "name": "payment_purchase_allocations_purchase_id_purchase_messages_id_fk", "tableFrom": "payment_purchase_allocations", "tableTo": "purchase_messages", "columnsFrom": ["purchase_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "payment_purchase_allocations_member_id_members_id_fk": { "name": "payment_purchase_allocations_member_id_members_id_fk", "tableFrom": "payment_purchase_allocations", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.payment_records": { "name": "payment_records", "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 }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": true }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "kind": { "name": "kind", "type": "text", "primaryKey": false, "notNull": true }, "amount_minor": { "name": "amount_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "currency": { "name": "currency", "type": "text", "primaryKey": false, "notNull": true }, "confirmation_id": { "name": "confirmation_id", "type": "uuid", "primaryKey": false, "notNull": false }, "recorded_at": { "name": "recorded_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": { "payment_records_cycle_member_idx": { "name": "payment_records_cycle_member_idx", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "payment_records_cycle_kind_idx": { "name": "payment_records_cycle_kind_idx", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "kind", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "payment_records_confirmation_unique": { "name": "payment_records_confirmation_unique", "columns": [ { "expression": "confirmation_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "payment_records_household_id_households_id_fk": { "name": "payment_records_household_id_households_id_fk", "tableFrom": "payment_records", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "payment_records_cycle_id_billing_cycles_id_fk": { "name": "payment_records_cycle_id_billing_cycles_id_fk", "tableFrom": "payment_records", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "payment_records_member_id_members_id_fk": { "name": "payment_records_member_id_members_id_fk", "tableFrom": "payment_records", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "restrict", "onUpdate": "no action" }, "payment_records_confirmation_id_payment_confirmations_id_fk": { "name": "payment_records_confirmation_id_payment_confirmations_id_fk", "tableFrom": "payment_records", "tableTo": "payment_confirmations", "columnsFrom": ["confirmation_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.presence_overrides": { "name": "presence_overrides", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": true }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "utility_days": { "name": "utility_days", "type": "integer", "primaryKey": false, "notNull": true }, "reason": { "name": "reason", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "presence_overrides_cycle_member_unique": { "name": "presence_overrides_cycle_member_unique", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "presence_overrides_cycle_idx": { "name": "presence_overrides_cycle_idx", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "presence_overrides_cycle_id_billing_cycles_id_fk": { "name": "presence_overrides_cycle_id_billing_cycles_id_fk", "tableFrom": "presence_overrides", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "presence_overrides_member_id_members_id_fk": { "name": "presence_overrides_member_id_members_id_fk", "tableFrom": "presence_overrides", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.processed_bot_messages": { "name": "processed_bot_messages", "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 }, "source": { "name": "source", "type": "text", "primaryKey": false, "notNull": true }, "source_message_key": { "name": "source_message_key", "type": "text", "primaryKey": false, "notNull": true }, "payload_hash": { "name": "payload_hash", "type": "text", "primaryKey": false, "notNull": false }, "processed_at": { "name": "processed_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "processed_bot_messages_source_message_unique": { "name": "processed_bot_messages_source_message_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "source", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "source_message_key", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "processed_bot_messages_household_id_households_id_fk": { "name": "processed_bot_messages_household_id_households_id_fk", "tableFrom": "processed_bot_messages", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.purchase_entries": { "name": "purchase_entries", "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 }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": false }, "payer_member_id": { "name": "payer_member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "amount_minor": { "name": "amount_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "currency": { "name": "currency", "type": "text", "primaryKey": false, "notNull": true }, "raw_text": { "name": "raw_text", "type": "text", "primaryKey": false, "notNull": true }, "normalized_text": { "name": "normalized_text", "type": "text", "primaryKey": false, "notNull": false }, "parser_mode": { "name": "parser_mode", "type": "text", "primaryKey": false, "notNull": true }, "parser_confidence": { "name": "parser_confidence", "type": "integer", "primaryKey": false, "notNull": true }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": false }, "telegram_message_id": { "name": "telegram_message_id", "type": "text", "primaryKey": false, "notNull": false }, "telegram_thread_id": { "name": "telegram_thread_id", "type": "text", "primaryKey": false, "notNull": false }, "message_sent_at": { "name": "message_sent_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": { "purchase_entries_household_cycle_idx": { "name": "purchase_entries_household_cycle_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "purchase_entries_payer_idx": { "name": "purchase_entries_payer_idx", "columns": [ { "expression": "payer_member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "purchase_entries_household_tg_message_unique": { "name": "purchase_entries_household_tg_message_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_message_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "purchase_entries_household_id_households_id_fk": { "name": "purchase_entries_household_id_households_id_fk", "tableFrom": "purchase_entries", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "purchase_entries_cycle_id_billing_cycles_id_fk": { "name": "purchase_entries_cycle_id_billing_cycles_id_fk", "tableFrom": "purchase_entries", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, "purchase_entries_payer_member_id_members_id_fk": { "name": "purchase_entries_payer_member_id_members_id_fk", "tableFrom": "purchase_entries", "tableTo": "members", "columnsFrom": ["payer_member_id"], "columnsTo": ["id"], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.purchase_message_participants": { "name": "purchase_message_participants", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "purchase_message_id": { "name": "purchase_message_id", "type": "uuid", "primaryKey": false, "notNull": true }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "included": { "name": "included", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "share_amount_minor": { "name": "share_amount_minor", "type": "bigint", "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": { "purchase_message_participants_purchase_member_unique": { "name": "purchase_message_participants_purchase_member_unique", "columns": [ { "expression": "purchase_message_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "purchase_message_participants_purchase_idx": { "name": "purchase_message_participants_purchase_idx", "columns": [ { "expression": "purchase_message_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "purchase_message_participants_member_idx": { "name": "purchase_message_participants_member_idx", "columns": [ { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "purchase_message_participants_purchase_message_id_purchase_messages_id_fk": { "name": "purchase_message_participants_purchase_message_id_purchase_messages_id_fk", "tableFrom": "purchase_message_participants", "tableTo": "purchase_messages", "columnsFrom": ["purchase_message_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "purchase_message_participants_member_id_members_id_fk": { "name": "purchase_message_participants_member_id_members_id_fk", "tableFrom": "purchase_message_participants", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.purchase_messages": { "name": "purchase_messages", "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 }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": false }, "sender_member_id": { "name": "sender_member_id", "type": "uuid", "primaryKey": false, "notNull": false }, "payer_member_id": { "name": "payer_member_id", "type": "uuid", "primaryKey": false, "notNull": false }, "sender_telegram_user_id": { "name": "sender_telegram_user_id", "type": "text", "primaryKey": false, "notNull": true }, "sender_display_name": { "name": "sender_display_name", "type": "text", "primaryKey": false, "notNull": false }, "raw_text": { "name": "raw_text", "type": "text", "primaryKey": false, "notNull": true }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_message_id": { "name": "telegram_message_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_thread_id": { "name": "telegram_thread_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_update_id": { "name": "telegram_update_id", "type": "text", "primaryKey": false, "notNull": true }, "message_sent_at": { "name": "message_sent_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "parsed_amount_minor": { "name": "parsed_amount_minor", "type": "bigint", "primaryKey": false, "notNull": false }, "parsed_currency": { "name": "parsed_currency", "type": "text", "primaryKey": false, "notNull": false }, "parsed_item_description": { "name": "parsed_item_description", "type": "text", "primaryKey": false, "notNull": false }, "participant_split_mode": { "name": "participant_split_mode", "type": "text", "primaryKey": false, "notNull": true, "default": "'equal'" }, "parser_mode": { "name": "parser_mode", "type": "text", "primaryKey": false, "notNull": false }, "parser_confidence": { "name": "parser_confidence", "type": "integer", "primaryKey": false, "notNull": false }, "needs_review": { "name": "needs_review", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "parser_error": { "name": "parser_error", "type": "text", "primaryKey": false, "notNull": false }, "processing_status": { "name": "processing_status", "type": "text", "primaryKey": false, "notNull": true, "default": "'pending'" }, "ingested_at": { "name": "ingested_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "purchase_messages_household_thread_idx": { "name": "purchase_messages_household_thread_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_thread_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "purchase_messages_cycle_idx": { "name": "purchase_messages_cycle_idx", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "purchase_messages_sender_idx": { "name": "purchase_messages_sender_idx", "columns": [ { "expression": "sender_telegram_user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "purchase_messages_household_tg_message_unique": { "name": "purchase_messages_household_tg_message_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_message_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "purchase_messages_household_tg_update_unique": { "name": "purchase_messages_household_tg_update_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_update_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "purchase_messages_household_id_households_id_fk": { "name": "purchase_messages_household_id_households_id_fk", "tableFrom": "purchase_messages", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "purchase_messages_cycle_id_billing_cycles_id_fk": { "name": "purchase_messages_cycle_id_billing_cycles_id_fk", "tableFrom": "purchase_messages", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, "purchase_messages_sender_member_id_members_id_fk": { "name": "purchase_messages_sender_member_id_members_id_fk", "tableFrom": "purchase_messages", "tableTo": "members", "columnsFrom": ["sender_member_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, "purchase_messages_payer_member_id_members_id_fk": { "name": "purchase_messages_payer_member_id_members_id_fk", "tableFrom": "purchase_messages", "tableTo": "members", "columnsFrom": ["payer_member_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.rent_rules": { "name": "rent_rules", "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 }, "amount_minor": { "name": "amount_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "currency": { "name": "currency", "type": "text", "primaryKey": false, "notNull": true }, "effective_from_period": { "name": "effective_from_period", "type": "text", "primaryKey": false, "notNull": true }, "effective_to_period": { "name": "effective_to_period", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "rent_rules_household_from_period_unique": { "name": "rent_rules_household_from_period_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "effective_from_period", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "rent_rules_household_from_period_idx": { "name": "rent_rules_household_from_period_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "effective_from_period", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "rent_rules_household_id_households_id_fk": { "name": "rent_rules_household_id_households_id_fk", "tableFrom": "rent_rules", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.settlement_lines": { "name": "settlement_lines", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "settlement_id": { "name": "settlement_id", "type": "uuid", "primaryKey": false, "notNull": true }, "member_id": { "name": "member_id", "type": "uuid", "primaryKey": false, "notNull": true }, "rent_share_minor": { "name": "rent_share_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "utility_share_minor": { "name": "utility_share_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "purchase_offset_minor": { "name": "purchase_offset_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "net_due_minor": { "name": "net_due_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "explanations": { "name": "explanations", "type": "jsonb", "primaryKey": false, "notNull": true, "default": "'[]'::jsonb" }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "settlement_lines_settlement_member_unique": { "name": "settlement_lines_settlement_member_unique", "columns": [ { "expression": "settlement_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "member_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "settlement_lines_settlement_idx": { "name": "settlement_lines_settlement_idx", "columns": [ { "expression": "settlement_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "settlement_lines_settlement_id_settlements_id_fk": { "name": "settlement_lines_settlement_id_settlements_id_fk", "tableFrom": "settlement_lines", "tableTo": "settlements", "columnsFrom": ["settlement_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "settlement_lines_member_id_members_id_fk": { "name": "settlement_lines_member_id_members_id_fk", "tableFrom": "settlement_lines", "tableTo": "members", "columnsFrom": ["member_id"], "columnsTo": ["id"], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.settlements": { "name": "settlements", "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 }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": true }, "input_hash": { "name": "input_hash", "type": "text", "primaryKey": false, "notNull": true }, "total_due_minor": { "name": "total_due_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "currency": { "name": "currency", "type": "text", "primaryKey": false, "notNull": true }, "computed_at": { "name": "computed_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "metadata": { "name": "metadata", "type": "jsonb", "primaryKey": false, "notNull": true, "default": "'{}'::jsonb" } }, "indexes": { "settlements_cycle_unique": { "name": "settlements_cycle_unique", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "settlements_household_computed_idx": { "name": "settlements_household_computed_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "computed_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "settlements_household_id_households_id_fk": { "name": "settlements_household_id_households_id_fk", "tableFrom": "settlements", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "settlements_cycle_id_billing_cycles_id_fk": { "name": "settlements_cycle_id_billing_cycles_id_fk", "tableFrom": "settlements", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.telegram_pending_actions": { "name": "telegram_pending_actions", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "telegram_user_id": { "name": "telegram_user_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": true }, "action": { "name": "action", "type": "text", "primaryKey": false, "notNull": true }, "payload": { "name": "payload", "type": "jsonb", "primaryKey": false, "notNull": true, "default": "'{}'::jsonb" }, "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": { "telegram_pending_actions_chat_user_unique": { "name": "telegram_pending_actions_chat_user_unique", "columns": [ { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "telegram_pending_actions_user_action_idx": { "name": "telegram_pending_actions_user_action_idx", "columns": [ { "expression": "telegram_user_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "action", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.topic_messages": { "name": "topic_messages", "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 }, "telegram_chat_id": { "name": "telegram_chat_id", "type": "text", "primaryKey": false, "notNull": true }, "telegram_thread_id": { "name": "telegram_thread_id", "type": "text", "primaryKey": false, "notNull": false }, "telegram_message_id": { "name": "telegram_message_id", "type": "text", "primaryKey": false, "notNull": false }, "telegram_update_id": { "name": "telegram_update_id", "type": "text", "primaryKey": false, "notNull": false }, "sender_telegram_user_id": { "name": "sender_telegram_user_id", "type": "text", "primaryKey": false, "notNull": false }, "sender_display_name": { "name": "sender_display_name", "type": "text", "primaryKey": false, "notNull": false }, "is_bot": { "name": "is_bot", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "raw_text": { "name": "raw_text", "type": "text", "primaryKey": false, "notNull": true }, "message_sent_at": { "name": "message_sent_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": { "topic_messages_household_thread_sent_idx": { "name": "topic_messages_household_thread_sent_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_thread_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "message_sent_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "topic_messages_household_chat_sent_idx": { "name": "topic_messages_household_chat_sent_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "message_sent_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "topic_messages_household_tg_message_unique": { "name": "topic_messages_household_tg_message_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_chat_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_message_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} }, "topic_messages_household_tg_update_unique": { "name": "topic_messages_household_tg_update_unique", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "telegram_update_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "topic_messages_household_id_households_id_fk": { "name": "topic_messages_household_id_households_id_fk", "tableFrom": "topic_messages", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.utility_bills": { "name": "utility_bills", "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 }, "cycle_id": { "name": "cycle_id", "type": "uuid", "primaryKey": false, "notNull": true }, "bill_name": { "name": "bill_name", "type": "text", "primaryKey": false, "notNull": true }, "amount_minor": { "name": "amount_minor", "type": "bigint", "primaryKey": false, "notNull": true }, "currency": { "name": "currency", "type": "text", "primaryKey": false, "notNull": true }, "due_date": { "name": "due_date", "type": "date", "primaryKey": false, "notNull": false }, "source": { "name": "source", "type": "text", "primaryKey": false, "notNull": true, "default": "'manual'" }, "created_by_member_id": { "name": "created_by_member_id", "type": "uuid", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "utility_bills_cycle_idx": { "name": "utility_bills_cycle_idx", "columns": [ { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "utility_bills_household_cycle_idx": { "name": "utility_bills_household_cycle_idx", "columns": [ { "expression": "household_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "cycle_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "utility_bills_household_id_households_id_fk": { "name": "utility_bills_household_id_households_id_fk", "tableFrom": "utility_bills", "tableTo": "households", "columnsFrom": ["household_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "utility_bills_cycle_id_billing_cycles_id_fk": { "name": "utility_bills_cycle_id_billing_cycles_id_fk", "tableFrom": "utility_bills", "tableTo": "billing_cycles", "columnsFrom": ["cycle_id"], "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, "utility_bills_created_by_member_id_members_id_fk": { "name": "utility_bills_created_by_member_id_members_id_fk", "tableFrom": "utility_bills", "tableTo": "members", "columnsFrom": ["created_by_member_id"], "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": {}, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }