-- =====================================================================
-- Migration: Referral Freeze System
-- Date: 2026-08-23
-- Description: Adds ReferralFreeze table for balance-triggered referral
--              requirements. When user balance exceeds minimum, they are
--              frozen for selling until they refer enough new users.
-- =====================================================================

CREATE TABLE IF NOT EXISTS `ReferralFreeze` (
  `id`                     VARCHAR(191)    NOT NULL PRIMARY KEY,
  `user_id`                VARCHAR(191)    NOT NULL,
  `required_referral_count` INT           NOT NULL DEFAULT 3,
  `current_referral_count`  INT           NOT NULL DEFAULT 0,
  `is_active`              BOOLEAN         NOT NULL DEFAULT TRUE,
  `frozen_at`              DATETIME(3)     NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  `unfrozen_at`            DATETIME(3)     NULL,
  `unfrozen_by`            VARCHAR(191)    NULL,
  `metadata`               JSON            NULL,
  INDEX `idx_referral_freeze_user` (`user_id`),
  INDEX `idx_referral_freeze_active` (`is_active`),
  FOREIGN KEY (`user_id`) REFERENCES `User`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
