-- Migration: Create Super Admin and System Company
-- Description: Inserts the default System Company and Super Admin user.
-- Uses unified tables (companies, users, user_roles)
--
-- ⚠️  SEM HASH HARDCODED — o hash é gerado em runtime pelo seeder-api.
--     Motivo: bcrypt(password + pepper) depende do valor de PASSWORD_PEPPER
--     que varia por ambiente. Hardcodar o hash aqui amarraria o deploy a um
--     pepper específico e quebraria logins silenciosamente se o pepper mudar.
--
--     Fluxo correto após reset do banco:
--       1. npm run migrate  → cria o usuário com senha bloqueada (placeholder)
--       2. npm run seed     → gera o hash correto e ativa o usuário
--
--     O status 'force_change_password' sinaliza que o hash ainda não foi
--     definido pelo seeder. O usuário NÃO consegue logar antes do seed.

-- 1. Insert System Company (for SuperAdmin context)
INSERT INTO companies (name, slug, type, document, email, description, verified, active)
VALUES (
    'GoHorse System',
    'gohorse-system',
    'system',
    '00.000.000/0001-91',
    'admin@gohorsejobs.com',
    '{"tagline": "System Administration Tenant"}',
    true,
    true
) ON CONFLICT (slug) DO NOTHING;

-- 2. Insert Super Admin User (sem hash — seeder define o hash em runtime)
INSERT INTO users (identifier, password_hash, role, full_name, email, status, active)
VALUES (
    'superadmin',
    '$invalid-placeholder-run-seeder$',
    'superadmin',
    'Super Administrator',
    'admin@gohorsejobs.com',
    'pending',
    true
) ON CONFLICT (identifier) DO NOTHING;
-- ON CONFLICT DO NOTHING: não sobrescreve se o seeder já definiu o hash.

-- 3. Assign superadmin role (if user_roles table exists)
DO $$
BEGIN
    IF EXISTS (SELECT FROM pg_tables WHERE tablename = 'user_roles') THEN
        INSERT INTO user_roles (user_id, role)
        SELECT id, 'superadmin' FROM users WHERE identifier = 'superadmin'
        ON CONFLICT (user_id, role) DO NOTHING;
    END IF;
END $$;

