-- =====================================================================
-- Migration: Add performance-critical indexes
-- Date: 2026-08-21
-- Description: Adds indexes identified by query pattern analysis.
-- =====================================================================

-- User model
CREATE INDEX `User_referrerId_idx` ON `User`(`referrerId`);
CREATE INDEX `User_lastLoginAt_idx` ON `User`(`lastLoginAt`);
CREATE INDEX `User_createdAt_idx` ON `User`(`createdAt`);

-- Wallet model
CREATE INDEX `Wallet_isFrozen_idx` ON `Wallet`(`isFrozen`);

-- Transaction model
CREATE INDEX `Transaction_walletId_createdAt_idx` ON `Transaction`(`walletId`, `createdAt`);
CREATE INDEX `Transaction_walletId_type_createdAt_idx` ON `Transaction`(`walletId`, `type`, `createdAt`);
CREATE INDEX `Transaction_orderId_idx` ON `Transaction`(`orderId`);
CREATE INDEX `Transaction_referenceId_idx` ON `Transaction`(`referenceId`);

-- Order model
CREATE INDEX `Order_userId_status_createdAt_idx` ON `Order`(`userId`, `status`, `createdAt`);
CREATE INDEX `Order_userId_side_status_idx` ON `Order`(`userId`, `side`, `status`);

-- Trade model
CREATE INDEX `Trade_buyerId_createdAt_idx` ON `Trade`(`buyerId`, `createdAt`);
CREATE INDEX `Trade_sellerId_createdAt_idx` ON `Trade`(`sellerId`, `createdAt`);

-- Escrow model
CREATE INDEX `Escrow_status_idx` ON `Escrow`(`status`);

-- OrderLock model
CREATE INDEX `OrderLock_tradeId_idx` ON `OrderLock`(`tradeId`);
CREATE INDEX `OrderLock_orderId_idx` ON `OrderLock`(`orderId`);
CREATE INDEX `OrderLock_userId_idx` ON `OrderLock`(`userId`);
CREATE INDEX `OrderLock_status_idx` ON `OrderLock`(`status`);

-- SupportTicket model
CREATE INDEX `SupportTicket_closedById_idx` ON `SupportTicket`(`closedById`);
CREATE INDEX `SupportTicket_createdById_status_createdAt_idx` ON `SupportTicket`(`createdById`, `status`, `createdAt`);
CREATE INDEX `SupportTicket_assignedToId_status_createdAt_idx` ON `SupportTicket`(`assignedToId`, `status`, `createdAt`);
