-- Migration: Add totp_recover column and twofactor table
-- Adds recovery code storage and twofactor providers for TOTP/remember tokens.
--
-- TwoFactor types:
--   0 = Authenticator (TOTP)
--   1 = Email
--   5 = Remember (device trust token)
--   8 = RecoveryCode

CREATE TABLE IF NOT EXISTS twofactor (
    uuid TEXT PRIMARY KEY NOT NULL,
    user_uuid TEXT NOT NULL,
    atype INTEGER NOT NULL,
    enabled INTEGER NOT NULL DEFAULT 1,
    data TEXT NOT NULL,
    last_used INTEGER NOT NULL DEFAULT 0,
    FOREIGN KEY (user_uuid) REFERENCES users(id) ON DELETE CASCADE,
    UNIQUE(user_uuid, atype)
);

-- Add totp_recover column to users table for recovery codes
ALTER TABLE users ADD COLUMN totp_recover TEXT;
