-- CreateTable CREATE TABLE "users" ( "id" BIGSERIAL NOT NULL, "username" VARCHAR(64) NOT NULL, "user_type" VARCHAR(20) NOT NULL, "status" VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', "parent_id" BIGINT, "agent_level" INTEGER, "locale" VARCHAR(10) NOT NULL DEFAULT 'en-US', "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "deleted_at" TIMESTAMP(3), CONSTRAINT "users_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "user_auth" ( "id" BIGSERIAL NOT NULL, "user_id" BIGINT NOT NULL, "password_hash" VARCHAR(255) NOT NULL, "login_fail_count" INTEGER NOT NULL DEFAULT 0, "locked_until" TIMESTAMP(3), "last_login_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "user_auth_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "user_preferences" ( "id" BIGSERIAL NOT NULL, "user_id" BIGINT NOT NULL, "locale" VARCHAR(10) NOT NULL DEFAULT 'en-US', "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "user_preferences_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "roles" ( "id" BIGSERIAL NOT NULL, "code" VARCHAR(64) NOT NULL, "name" VARCHAR(128) NOT NULL, "description" VARCHAR(255), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "roles_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "permissions" ( "id" BIGSERIAL NOT NULL, "code" VARCHAR(128) NOT NULL, "name" VARCHAR(128) NOT NULL, "module" VARCHAR(64) NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "permissions_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "role_permissions" ( "role_id" BIGINT NOT NULL, "permission_id" BIGINT NOT NULL, CONSTRAINT "role_permissions_pkey" PRIMARY KEY ("role_id","permission_id") ); -- CreateTable CREATE TABLE "admin_user_roles" ( "user_id" BIGINT NOT NULL, "role_id" BIGINT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- CreateTable CREATE TABLE "agent_profiles" ( "id" BIGSERIAL NOT NULL, "user_id" BIGINT NOT NULL, "level" INTEGER NOT NULL, "parent_agent_id" BIGINT, "credit_limit" DECIMAL(18,4) NOT NULL DEFAULT 0, "used_credit" DECIMAL(18,4) NOT NULL DEFAULT 0, "direct_player_liability" DECIMAL(18,4) NOT NULL DEFAULT 0, "child_agent_exposure" DECIMAL(18,4) NOT NULL DEFAULT 0, "status" VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', "max_single_deposit" DECIMAL(18,4), "max_daily_deposit" DECIMAL(18,4), "cashback_rate" DECIMAL(8,4) NOT NULL DEFAULT 0, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "agent_profiles_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "agent_closure" ( "ancestor_id" BIGINT NOT NULL, "descendant_id" BIGINT NOT NULL, "depth" INTEGER NOT NULL, CONSTRAINT "agent_closure_pkey" PRIMARY KEY ("ancestor_id","descendant_id") ); -- CreateTable CREATE TABLE "agent_credit_transactions" ( "id" BIGSERIAL NOT NULL, "agent_id" BIGINT NOT NULL, "transaction_type" VARCHAR(32) NOT NULL, "amount" DECIMAL(18,4) NOT NULL, "credit_before" DECIMAL(18,4) NOT NULL, "credit_after" DECIMAL(18,4) NOT NULL, "reference_type" VARCHAR(32), "reference_id" VARCHAR(64), "operator_id" BIGINT, "request_id" VARCHAR(128), "remark" VARCHAR(500), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "agent_credit_transactions_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "wallets" ( "id" BIGSERIAL NOT NULL, "user_id" BIGINT NOT NULL, "available_balance" DECIMAL(18,4) NOT NULL DEFAULT 0, "frozen_balance" DECIMAL(18,4) NOT NULL DEFAULT 0, "currency" VARCHAR(16) NOT NULL DEFAULT 'USD', "status" VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', "version" INTEGER NOT NULL DEFAULT 0, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "wallets_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "wallet_transactions" ( "id" BIGSERIAL NOT NULL, "transaction_id" VARCHAR(64) NOT NULL, "user_id" BIGINT NOT NULL, "wallet_id" BIGINT NOT NULL, "transaction_type" VARCHAR(32) NOT NULL, "amount" DECIMAL(18,4) NOT NULL, "balance_before" DECIMAL(18,4) NOT NULL, "balance_after" DECIMAL(18,4) NOT NULL, "frozen_before" DECIMAL(18,4) NOT NULL, "frozen_after" DECIMAL(18,4) NOT NULL, "reference_type" VARCHAR(32), "reference_id" VARCHAR(64), "operator_id" BIGINT, "remark" VARCHAR(500), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "wallet_transactions_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "leagues" ( "id" BIGSERIAL NOT NULL, "sport_type" VARCHAR(20) NOT NULL DEFAULT 'FOOTBALL', "code" VARCHAR(64) NOT NULL, "display_order" INTEGER NOT NULL DEFAULT 0, "is_active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "deleted_at" TIMESTAMP(3), CONSTRAINT "leagues_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "teams" ( "id" BIGSERIAL NOT NULL, "sport_type" VARCHAR(20) NOT NULL DEFAULT 'FOOTBALL', "code" VARCHAR(64) NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "deleted_at" TIMESTAMP(3), CONSTRAINT "teams_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "entity_translations" ( "id" BIGSERIAL NOT NULL, "entity_type" VARCHAR(32) NOT NULL, "entity_id" BIGINT NOT NULL, "locale" VARCHAR(10) NOT NULL, "field_name" VARCHAR(32) NOT NULL, "value" VARCHAR(500) NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "entity_translations_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "matches" ( "id" BIGSERIAL NOT NULL, "sport_type" VARCHAR(20) NOT NULL DEFAULT 'FOOTBALL', "league_id" BIGINT NOT NULL, "home_team_id" BIGINT NOT NULL, "away_team_id" BIGINT NOT NULL, "start_time" TIMESTAMP(3) NOT NULL, "status" VARCHAR(32) NOT NULL DEFAULT 'DRAFT', "is_hot" BOOLEAN NOT NULL DEFAULT false, "display_order" INTEGER NOT NULL DEFAULT 0, "publish_time" TIMESTAMP(3), "close_time" TIMESTAMP(3), "is_outright" BOOLEAN NOT NULL DEFAULT false, "created_by" BIGINT, "updated_by" BIGINT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "deleted_at" TIMESTAMP(3), CONSTRAINT "matches_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "match_scores" ( "id" BIGSERIAL NOT NULL, "match_id" BIGINT NOT NULL, "ht_home_score" INTEGER, "ht_away_score" INTEGER, "ft_home_score" INTEGER, "ft_away_score" INTEGER, "winner_team_id" BIGINT, "recorded_by" BIGINT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "match_scores_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "markets" ( "id" BIGSERIAL NOT NULL, "match_id" BIGINT NOT NULL, "market_type" VARCHAR(64) NOT NULL, "period" VARCHAR(16) NOT NULL, "line_value" DECIMAL(8,2), "status" VARCHAR(20) NOT NULL DEFAULT 'OPEN', "allow_single" BOOLEAN NOT NULL DEFAULT true, "allow_parlay" BOOLEAN NOT NULL DEFAULT true, "sort_order" INTEGER NOT NULL DEFAULT 0, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "markets_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "market_selections" ( "id" BIGSERIAL NOT NULL, "market_id" BIGINT NOT NULL, "selection_code" VARCHAR(64) NOT NULL, "selection_name" VARCHAR(255) NOT NULL, "odds" DECIMAL(18,6) NOT NULL, "odds_version" BIGINT NOT NULL DEFAULT 1, "status" VARCHAR(20) NOT NULL DEFAULT 'OPEN', "sort_order" INTEGER NOT NULL DEFAULT 0, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "market_selections_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "odds_change_logs" ( "id" BIGSERIAL NOT NULL, "selection_id" BIGINT NOT NULL, "old_odds" DECIMAL(18,6) NOT NULL, "new_odds" DECIMAL(18,6) NOT NULL, "odds_version" BIGINT NOT NULL, "changed_by" BIGINT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "odds_change_logs_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "bets" ( "id" BIGSERIAL NOT NULL, "bet_no" VARCHAR(64) NOT NULL, "user_id" BIGINT NOT NULL, "agent_id" BIGINT, "bet_type" VARCHAR(20) NOT NULL, "stake" DECIMAL(18,4) NOT NULL, "total_odds" DECIMAL(18,6), "potential_return" DECIMAL(18,4), "actual_return" DECIMAL(18,4) NOT NULL DEFAULT 0, "status" VARCHAR(32) NOT NULL DEFAULT 'PENDING', "settlement_status" VARCHAR(32), "currency" VARCHAR(16) NOT NULL DEFAULT 'USD', "request_id" VARCHAR(128) NOT NULL, "placed_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "settled_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "bets_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "bet_selections" ( "id" BIGSERIAL NOT NULL, "bet_id" BIGINT NOT NULL, "match_id" BIGINT, "market_id" BIGINT NOT NULL, "selection_id" BIGINT NOT NULL, "market_type" VARCHAR(64) NOT NULL, "period" VARCHAR(16), "selection_name_snapshot" VARCHAR(255) NOT NULL, "handicap_line" DECIMAL(8,2), "total_line" DECIMAL(8,2), "odds" DECIMAL(18,6) NOT NULL, "odds_version" BIGINT NOT NULL, "result_status" VARCHAR(32), "effective_odds" DECIMAL(18,6), "sort_order" INTEGER NOT NULL DEFAULT 0, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "bet_selections_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "settlement_batches" ( "id" BIGSERIAL NOT NULL, "match_id" BIGINT NOT NULL, "batch_no" VARCHAR(64) NOT NULL, "ht_home_score" INTEGER, "ht_away_score" INTEGER, "ft_home_score" INTEGER, "ft_away_score" INTEGER, "status" VARCHAR(20) NOT NULL DEFAULT 'PREVIEW', "total_bets" INTEGER NOT NULL DEFAULT 0, "total_payout" DECIMAL(18,4) NOT NULL DEFAULT 0, "total_refund" DECIMAL(18,4) NOT NULL DEFAULT 0, "operator_id" BIGINT, "confirmed_at" TIMESTAMP(3), "is_resettle" BOOLEAN NOT NULL DEFAULT false, "reason" VARCHAR(500), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "settlement_batches_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "settlement_items" ( "id" BIGSERIAL NOT NULL, "batch_id" BIGINT NOT NULL, "bet_id" BIGINT NOT NULL, "user_id" BIGINT NOT NULL, "result" VARCHAR(32) NOT NULL, "payout" DECIMAL(18,4) NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "settlement_items_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "cashback_rules" ( "id" BIGSERIAL NOT NULL, "name" VARCHAR(128) NOT NULL, "target_type" VARCHAR(32) NOT NULL, "target_id" BIGINT, "rate" DECIMAL(8,4) NOT NULL, "market_type" VARCHAR(64), "is_active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "cashback_rules_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "cashback_batches" ( "id" BIGSERIAL NOT NULL, "batch_no" VARCHAR(64) NOT NULL, "period_start" TIMESTAMP(3) NOT NULL, "period_end" TIMESTAMP(3) NOT NULL, "status" VARCHAR(20) NOT NULL DEFAULT 'PREVIEW', "total_amount" DECIMAL(18,4) NOT NULL DEFAULT 0, "player_count" INTEGER NOT NULL DEFAULT 0, "operator_id" BIGINT, "confirmed_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "cashback_batches_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "cashback_items" ( "id" BIGSERIAL NOT NULL, "batch_id" BIGINT NOT NULL, "user_id" BIGINT NOT NULL, "effective_stake" DECIMAL(18,4) NOT NULL, "rate" DECIMAL(8,4) NOT NULL, "amount" DECIMAL(18,4) NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "cashback_items_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "contents" ( "id" BIGSERIAL NOT NULL, "content_type" VARCHAR(32) NOT NULL, "sort_order" INTEGER NOT NULL DEFAULT 0, "status" VARCHAR(20) NOT NULL DEFAULT 'DRAFT', "link_type" VARCHAR(32), "link_target" VARCHAR(500), "start_time" TIMESTAMP(3), "end_time" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "contents_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "content_translations" ( "id" BIGSERIAL NOT NULL, "content_id" BIGINT NOT NULL, "locale" VARCHAR(10) NOT NULL, "title" VARCHAR(255), "body" TEXT, "image_url" VARCHAR(500), CONSTRAINT "content_translations_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "i18n_messages" ( "id" BIGSERIAL NOT NULL, "msg_key" VARCHAR(128) NOT NULL, "locale" VARCHAR(10) NOT NULL, "value" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "i18n_messages_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "system_configs" ( "id" BIGSERIAL NOT NULL, "config_key" VARCHAR(128) NOT NULL, "config_value" TEXT NOT NULL, "description" VARCHAR(255), "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "system_configs_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "audit_logs" ( "id" BIGSERIAL NOT NULL, "operator_id" BIGINT, "operator_type" VARCHAR(20) NOT NULL, "action" VARCHAR(128) NOT NULL, "module" VARCHAR(64) NOT NULL, "target_type" VARCHAR(32), "target_id" VARCHAR(64), "before_data" TEXT, "after_data" TEXT, "ip_address" VARCHAR(45), "user_agent" VARCHAR(500), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "audit_logs_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "users_username_key" ON "users"("username"); -- CreateIndex CREATE INDEX "users_user_type_idx" ON "users"("user_type"); -- CreateIndex CREATE INDEX "users_parent_id_idx" ON "users"("parent_id"); -- CreateIndex CREATE UNIQUE INDEX "user_auth_user_id_key" ON "user_auth"("user_id"); -- CreateIndex CREATE UNIQUE INDEX "user_preferences_user_id_key" ON "user_preferences"("user_id"); -- CreateIndex CREATE UNIQUE INDEX "roles_code_key" ON "roles"("code"); -- CreateIndex CREATE UNIQUE INDEX "permissions_code_key" ON "permissions"("code"); -- CreateIndex CREATE UNIQUE INDEX "admin_user_roles_user_id_key" ON "admin_user_roles"("user_id"); -- CreateIndex CREATE UNIQUE INDEX "agent_profiles_user_id_key" ON "agent_profiles"("user_id"); -- CreateIndex CREATE INDEX "agent_profiles_parent_agent_id_idx" ON "agent_profiles"("parent_agent_id"); -- CreateIndex CREATE INDEX "agent_closure_descendant_id_idx" ON "agent_closure"("descendant_id"); -- CreateIndex CREATE INDEX "agent_credit_transactions_agent_id_idx" ON "agent_credit_transactions"("agent_id"); -- CreateIndex CREATE UNIQUE INDEX "agent_credit_transactions_operator_id_request_id_key" ON "agent_credit_transactions"("operator_id", "request_id"); -- CreateIndex CREATE UNIQUE INDEX "wallets_user_id_key" ON "wallets"("user_id"); -- CreateIndex CREATE UNIQUE INDEX "wallet_transactions_transaction_id_key" ON "wallet_transactions"("transaction_id"); -- CreateIndex CREATE INDEX "wallet_transactions_user_id_idx" ON "wallet_transactions"("user_id"); -- CreateIndex CREATE INDEX "wallet_transactions_wallet_id_idx" ON "wallet_transactions"("wallet_id"); -- CreateIndex CREATE INDEX "wallet_transactions_created_at_idx" ON "wallet_transactions"("created_at"); -- CreateIndex CREATE UNIQUE INDEX "leagues_code_key" ON "leagues"("code"); -- CreateIndex CREATE UNIQUE INDEX "teams_code_key" ON "teams"("code"); -- CreateIndex CREATE INDEX "entity_translations_entity_type_entity_id_idx" ON "entity_translations"("entity_type", "entity_id"); -- CreateIndex CREATE UNIQUE INDEX "entity_translations_entity_type_entity_id_locale_field_name_key" ON "entity_translations"("entity_type", "entity_id", "locale", "field_name"); -- CreateIndex CREATE INDEX "matches_status_idx" ON "matches"("status"); -- CreateIndex CREATE INDEX "matches_start_time_idx" ON "matches"("start_time"); -- CreateIndex CREATE INDEX "matches_league_id_idx" ON "matches"("league_id"); -- CreateIndex CREATE UNIQUE INDEX "match_scores_match_id_key" ON "match_scores"("match_id"); -- CreateIndex CREATE INDEX "markets_match_id_idx" ON "markets"("match_id"); -- CreateIndex CREATE INDEX "markets_market_type_idx" ON "markets"("market_type"); -- CreateIndex CREATE INDEX "market_selections_market_id_idx" ON "market_selections"("market_id"); -- CreateIndex CREATE INDEX "odds_change_logs_selection_id_idx" ON "odds_change_logs"("selection_id"); -- CreateIndex CREATE UNIQUE INDEX "bets_bet_no_key" ON "bets"("bet_no"); -- CreateIndex CREATE INDEX "bets_user_id_idx" ON "bets"("user_id"); -- CreateIndex CREATE INDEX "bets_agent_id_idx" ON "bets"("agent_id"); -- CreateIndex CREATE INDEX "bets_status_idx" ON "bets"("status"); -- CreateIndex CREATE INDEX "bets_placed_at_idx" ON "bets"("placed_at"); -- CreateIndex CREATE UNIQUE INDEX "bets_user_id_request_id_key" ON "bets"("user_id", "request_id"); -- CreateIndex CREATE INDEX "bet_selections_bet_id_idx" ON "bet_selections"("bet_id"); -- CreateIndex CREATE INDEX "bet_selections_match_id_idx" ON "bet_selections"("match_id"); -- CreateIndex CREATE UNIQUE INDEX "settlement_batches_batch_no_key" ON "settlement_batches"("batch_no"); -- CreateIndex CREATE INDEX "settlement_batches_match_id_idx" ON "settlement_batches"("match_id"); -- CreateIndex CREATE INDEX "settlement_items_batch_id_idx" ON "settlement_items"("batch_id"); -- CreateIndex CREATE INDEX "settlement_items_bet_id_idx" ON "settlement_items"("bet_id"); -- CreateIndex CREATE UNIQUE INDEX "cashback_batches_batch_no_key" ON "cashback_batches"("batch_no"); -- CreateIndex CREATE INDEX "cashback_items_batch_id_idx" ON "cashback_items"("batch_id"); -- CreateIndex CREATE INDEX "cashback_items_user_id_idx" ON "cashback_items"("user_id"); -- CreateIndex CREATE INDEX "contents_content_type_status_idx" ON "contents"("content_type", "status"); -- CreateIndex CREATE UNIQUE INDEX "content_translations_content_id_locale_key" ON "content_translations"("content_id", "locale"); -- CreateIndex CREATE UNIQUE INDEX "i18n_messages_msg_key_locale_key" ON "i18n_messages"("msg_key", "locale"); -- CreateIndex CREATE UNIQUE INDEX "system_configs_config_key_key" ON "system_configs"("config_key"); -- CreateIndex CREATE INDEX "audit_logs_operator_id_idx" ON "audit_logs"("operator_id"); -- CreateIndex CREATE INDEX "audit_logs_module_idx" ON "audit_logs"("module"); -- CreateIndex CREATE INDEX "audit_logs_created_at_idx" ON "audit_logs"("created_at"); -- AddForeignKey ALTER TABLE "users" ADD CONSTRAINT "users_parent_id_fkey" FOREIGN KEY ("parent_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "user_auth" ADD CONSTRAINT "user_auth_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "role_permissions" ADD CONSTRAINT "role_permissions_role_id_fkey" FOREIGN KEY ("role_id") REFERENCES "roles"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "role_permissions" ADD CONSTRAINT "role_permissions_permission_id_fkey" FOREIGN KEY ("permission_id") REFERENCES "permissions"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "admin_user_roles" ADD CONSTRAINT "admin_user_roles_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "admin_user_roles" ADD CONSTRAINT "admin_user_roles_role_id_fkey" FOREIGN KEY ("role_id") REFERENCES "roles"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "agent_profiles" ADD CONSTRAINT "agent_profiles_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "wallets" ADD CONSTRAINT "wallets_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "wallet_transactions" ADD CONSTRAINT "wallet_transactions_wallet_id_fkey" FOREIGN KEY ("wallet_id") REFERENCES "wallets"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "matches" ADD CONSTRAINT "matches_league_id_fkey" FOREIGN KEY ("league_id") REFERENCES "leagues"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "matches" ADD CONSTRAINT "matches_home_team_id_fkey" FOREIGN KEY ("home_team_id") REFERENCES "teams"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "matches" ADD CONSTRAINT "matches_away_team_id_fkey" FOREIGN KEY ("away_team_id") REFERENCES "teams"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "match_scores" ADD CONSTRAINT "match_scores_match_id_fkey" FOREIGN KEY ("match_id") REFERENCES "matches"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "markets" ADD CONSTRAINT "markets_match_id_fkey" FOREIGN KEY ("match_id") REFERENCES "matches"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "market_selections" ADD CONSTRAINT "market_selections_market_id_fkey" FOREIGN KEY ("market_id") REFERENCES "markets"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "odds_change_logs" ADD CONSTRAINT "odds_change_logs_selection_id_fkey" FOREIGN KEY ("selection_id") REFERENCES "market_selections"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "bets" ADD CONSTRAINT "bets_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "bet_selections" ADD CONSTRAINT "bet_selections_bet_id_fkey" FOREIGN KEY ("bet_id") REFERENCES "bets"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "settlement_batches" ADD CONSTRAINT "settlement_batches_match_id_fkey" FOREIGN KEY ("match_id") REFERENCES "matches"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "settlement_items" ADD CONSTRAINT "settlement_items_batch_id_fkey" FOREIGN KEY ("batch_id") REFERENCES "settlement_batches"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "cashback_items" ADD CONSTRAINT "cashback_items_batch_id_fkey" FOREIGN KEY ("batch_id") REFERENCES "cashback_batches"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "content_translations" ADD CONSTRAINT "content_translations_content_id_fkey" FOREIGN KEY ("content_id") REFERENCES "contents"("id") ON DELETE RESTRICT ON UPDATE CASCADE;