-- =====================================================================
-- Server-authoritative Cyberhack: сервер сам генерирует доску/цели игры
-- (см. src/modules/users/cyberhack.rs — портированная 1:1 логика из
-- Cyberhack/src/lib.rs), хранит их здесь и при сдаче результата реплеит
-- присланный клиентом путь по своей копии, а не доверяет присланному score.
-- `used_at` защищает от повторной сдачи одной и той же сессии (двойная награда).
-- =====================================================================
CREATE TABLE hack_sessions (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    matrix JSONB NOT NULL,
    targets JSONB NOT NULL,
    base_value INT NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    expires_at TIMESTAMPTZ NOT NULL,
    used_at TIMESTAMPTZ
);

CREATE INDEX idx_hack_sessions_user ON hack_sessions(user_id);
