manicanldes-backend/prisma/migrations/202609080003_identity_integ.../migration.sql

15 lines
656 B
PL/PgSQL

-- Database-level invariants complement HTTP validation.
ALTER TABLE users ADD CONSTRAINT users_email_normalized CHECK (email = lower(email));
CREATE UNIQUE INDEX users_single_owner ON users (is_owner) WHERE is_owner = true;
-- Application-facing audit history is append-only. A dedicated DBA retention
-- procedure is required if records ever need to be archived or removed.
CREATE FUNCTION reject_audit_mutation() RETURNS trigger LANGUAGE plpgsql AS $$
BEGIN
RAISE EXCEPTION 'Audit events are append-only';
END;
$$;
CREATE TRIGGER audit_events_append_only
BEFORE UPDATE OR DELETE ON audit_events
FOR EACH ROW EXECUTE FUNCTION reject_audit_mutation();