-- Dev-stack seed: pre-create the `admin` user row without the `user:` prefix.
--
-- Why: the UI login controller stores the local admin as `user_id='user:admin'`
-- (JWT `sub` format), but the alerting + outbound controllers resolve the FK
-- via `authentication.name` with the `user:` prefix stripped, i.e. `admin`.
-- In k8s these controllers happily insert `admin` because production admins are
-- provisioned through the admin API with unprefixed user_ids. In the local
-- docker stack there's no such provisioning step, so the FK check fails with
-- "alert_rules_created_by_fkey violation" on the first rule create.
--
-- Seeding a row with `user_id='admin'` here bridges the gap so E2E smokes,
-- API probes, and manual dev sessions can create alerting rows straight away.
-- Flyway owns the schema in tenant_default; this script only INSERTs idempotently
-- and is gated on the schema existing.

DO $$
DECLARE
    schema_exists bool;
    table_exists  bool;
BEGIN
    SELECT EXISTS(
        SELECT 1 FROM information_schema.schemata WHERE schema_name = 'tenant_default'
    ) INTO schema_exists;
    IF NOT schema_exists THEN
        RAISE NOTICE 'tenant_default schema not yet migrated — skipping admin seed (Flyway will run on server start)';
        RETURN;
    END IF;

    SELECT EXISTS(
        SELECT 1 FROM information_schema.tables
        WHERE table_schema = 'tenant_default' AND table_name = 'users'
    ) INTO table_exists;
    IF NOT table_exists THEN
        RAISE NOTICE 'tenant_default.users not yet migrated — skipping admin seed';
        RETURN;
    END IF;

    INSERT INTO tenant_default.users (user_id, provider, email, display_name)
    VALUES ('admin', 'local', '', 'admin')
    ON CONFLICT (user_id) DO NOTHING;
END $$;
