feat(migrations): add missing fields and triggers for auditing changes in accounts and company_params

This commit is contained in:
Danel Kungla
2025-08-12 16:07:56 +03:00
parent b3620fbb19
commit b4a811e781
2 changed files with 5 additions and 86 deletions

View File

@@ -25,92 +25,6 @@ $function$
grant execute on function medreport.insert_company_params_on_new_company() to authenticated,
service_role;
CREATE OR REPLACE FUNCTION log_company_params_changes()
RETURNS trigger AS $$
BEGIN
-- For INSERT operation
IF (TG_OP = 'INSERT') THEN
INSERT INTO audit.log_entries (
schema_name,
table_name,
record_key,
operation,
row_data,
changed_data,
changed_by,
changed_by_role,
changed_at
)
VALUES (
'medreport', -- Schema name
'company_params', -- Table name
NEW.id, -- The ID of the inserted row
'INSERT', -- Operation type
NULL, -- No old data for INSERT
row_to_json(NEW), -- New data (after the INSERT)
auth.uid(), -- The user performing the insert
SESSION_USER, -- The role performing the insert
CURRENT_TIMESTAMP -- Timestamp of the insert
);
-- For UPDATE operation
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.log_entries (
schema_name,
table_name,
record_key,
operation,
row_data,
changed_data,
changed_by,
changed_by_role,
changed_at
)
VALUES (
'medreport', -- Schema name
'company_params', -- Table name
OLD.id, -- The ID of the updated row
'UPDATE', -- Operation type
row_to_json(OLD), -- Old data (before the update)
row_to_json(NEW), -- New data (after the update)
auth.uid(), -- The user performing the update
SESSION_USER, -- The role performing the update
CURRENT_TIMESTAMP -- Timestamp of the update
);
-- For DELETE operation
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.log_entries (
schema_name,
table_name,
record_key,
operation,
row_data,
changed_data,
changed_by,
changed_by_role,
changed_at
)
VALUES (
'medreport', -- Schema name
'company_params', -- Table name
OLD.id, -- The ID of the deleted row
'DELETE', -- Operation type
row_to_json(OLD), -- Old data (before the delete)
NULL, -- No new data for DELETE
auth.uid(), -- The user performing the delete
SESSION_USER, -- The role performing the delete
CURRENT_TIMESTAMP -- Timestamp of the delete
);
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER company_params_audit_trigger
AFTER INSERT OR UPDATE OR DELETE ON medreport.company_params
FOR EACH ROW
EXECUTE FUNCTION log_company_params_changes();
create or replace function medreport.create_team_account (
account_name text,
new_personal_code text

View File

@@ -0,0 +1,5 @@
alter table "medreport"."accounts" add column "has_consent_anonymized_company_statistics" boolean;
CREATE TRIGGER log_account_change AFTER DELETE OR UPDATE ON medreport.accounts FOR EACH ROW EXECUTE FUNCTION audit.log_audit_changes();
CREATE TRIGGER log_account_change AFTER DELETE OR UPDATE ON medreport.company_params FOR EACH ROW EXECUTE FUNCTION audit.log_audit_changes();