feat(migrations): add missing fields and triggers for auditing changes in accounts and company_params
This commit is contained in:
@@ -25,92 +25,6 @@ $function$
|
|||||||
grant execute on function medreport.insert_company_params_on_new_company() to authenticated,
|
grant execute on function medreport.insert_company_params_on_new_company() to authenticated,
|
||||||
service_role;
|
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 (
|
create or replace function medreport.create_team_account (
|
||||||
account_name text,
|
account_name text,
|
||||||
new_personal_code text
|
new_personal_code text
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
Reference in New Issue
Block a user