-- Körs som RDS master-användare EN gång (spec §52).
-- Separat databas + användare med minsta möjliga privilegier.
-- Ingen delning av andras tabeller.

CREATE DATABASE app;  -- byt namn per varumärke (brand.config.json slug)

-- Byt ut lösenordet mot ett genererat värde från Secrets Manager!
CREATE USER app_user WITH PASSWORD 'CHANGE_ME_FROM_SECRETS_MANAGER';

-- Anslut till den nya databasen och kör:
\connect app

-- Sök-extensions (i18n M7): skapas av master – appanvändaren saknar rättighet.
CREATE EXTENSION IF NOT EXISTS unaccent;
CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- Låst schema: appanvändaren äger public-schemat i sin egen databas
GRANT CONNECT ON DATABASE app TO app_user;
GRANT USAGE, CREATE ON SCHEMA public TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT USAGE, SELECT ON SEQUENCES TO app_user;

-- Ingen superuser, ingen replication, ingen åtkomst till andra databaser:
REVOKE ALL ON DATABASE postgres FROM app_user;

-- Migrationer körs av samma användare (CREATE på schemat räcker för drizzle).
-- Vid senare utbrytning till egen RDS: pg_dump/pg_restore enligt docs/infrastruktur.md.
