42 lines
1.7 KiB
MySQL
42 lines
1.7 KiB
MySQL
|
|
-- 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 $$;
|