-- =====================================================================
-- ДИНАМИЧЕСКИЕ ЛИМИТЫ ТРАФИКА ПРОКСИ
-- =====================================================================
-- data_limit_bytes = NULL означает безлимит. Лимит читается прокси-сервером
-- на каждой проверке (POST /api/v1/internal/validate) и на каждом отчёте о
-- расходе (POST /api/v1/internal/usage) — админ меняет его в любой момент
-- через PATCH /api/v1/admin/users/{id}/limit без перезапуска прокси.
ALTER TABLE users ADD COLUMN IF NOT EXISTS data_limit_bytes BIGINT;
ALTER TABLE users ADD COLUMN IF NOT EXISTS data_used_bytes BIGINT NOT NULL DEFAULT 0;
ALTER TABLE users ADD COLUMN IF NOT EXISTS data_period_reset_at TIMESTAMPTZ;

-- Дефолтный лимит тарифа — проставляется юзеру в data_limit_bytes при покупке
-- подписки (см. AppRepository::buy_subscription), чтобы не заводить отдельный
-- админ-флоу на каждую покупку. NULL = тариф без предустановленного лимита.
ALTER TABLE plans ADD COLUMN IF NOT EXISTS default_limit_bytes BIGINT;

-- =====================================================================
-- MAGIC-LINK ВХОД ЧЕРЕЗ TELEGRAM-БОТА ДЛЯ ДЕСКТОП/МОБИЛЬНОГО ПРИЛОЖЕНИЯ
-- =====================================================================
-- auth_sessions была создана в 0001_init.sql, но 0002_refresh_sessions.sql
-- (репурпоз черновика Magic Link под refresh-токены) её DROP'нул и не
-- пересоздал — на любой БД, накатываемой с нуля (CI, sqlx::test, новый
-- инстанс), следующий ALTER TABLE падал на несуществующей таблице. CREATE
-- TABLE IF NOT EXISTS чинит fresh-инсталл; ALTER/CREATE INDEX ниже остаются
-- IF NOT EXISTS на случай окружений, где таблица уже существует в старом виде.
CREATE TABLE IF NOT EXISTS auth_sessions (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID,
    auth_code VARCHAR(8) NOT NULL UNIQUE,
    is_verified BOOLEAN NOT NULL DEFAULT FALSE,
    expires_at TIMESTAMPTZ NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
ALTER TABLE auth_sessions ADD COLUMN IF NOT EXISTS created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
CREATE INDEX IF NOT EXISTS idx_auth_sessions_code ON auth_sessions(auth_code);
