Remove deprecated relationship change log migration and enhance error handling in FalukantService for partner retrieval

This commit is contained in:
Torsten Schulz (local)
2026-01-26 10:10:22 +01:00
parent bba68da488
commit 80b639b511
3 changed files with 118 additions and 134 deletions

View File

@@ -387,6 +387,77 @@ const syncDatabase = async () => {
console.warn('⚠️ Konnte Vocab-Trainer Tabellen nicht sicherstellen:', e?.message || e);
}
// Relationship-/Marriage-Proposal-Änderungen loggen (keine Einträge löschen; ohne db:migrate)
console.log("Ensuring relationship change log (falukant) exists...");
try {
await sequelize.query(`
CREATE TABLE IF NOT EXISTS falukant_log.relationship_change_log (
id serial PRIMARY KEY,
changed_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
table_name character varying(64) NOT NULL,
operation character varying(16) NOT NULL,
record_id integer,
payload_old jsonb,
payload_new jsonb
);
`);
await sequelize.query(`
CREATE INDEX IF NOT EXISTS relationship_change_log_changed_at_idx
ON falukant_log.relationship_change_log (changed_at);
`);
await sequelize.query(`
CREATE INDEX IF NOT EXISTS relationship_change_log_table_operation_idx
ON falukant_log.relationship_change_log (table_name, operation);
`);
await sequelize.query(`
CREATE OR REPLACE FUNCTION falukant_log.log_relationship_change()
RETURNS TRIGGER AS $$
DECLARE
v_record_id INTEGER;
v_payload_old JSONB;
v_payload_new JSONB;
BEGIN
IF TG_OP = 'INSERT' THEN
v_record_id := NEW.id;
v_payload_old := NULL;
v_payload_new := to_jsonb(NEW);
ELSIF TG_OP = 'UPDATE' THEN
v_record_id := NEW.id;
v_payload_old := to_jsonb(OLD);
v_payload_new := to_jsonb(NEW);
ELSIF TG_OP = 'DELETE' THEN
v_record_id := OLD.id;
v_payload_old := to_jsonb(OLD);
v_payload_new := NULL;
END IF;
INSERT INTO falukant_log.relationship_change_log (
table_name, operation, record_id, payload_old, payload_new
) VALUES (
TG_TABLE_NAME, TG_OP, v_record_id, v_payload_old, v_payload_new
);
IF TG_OP = 'DELETE' THEN RETURN OLD; ELSE RETURN NEW; END IF;
END;
$$ LANGUAGE plpgsql;
`);
await sequelize.query(`
DROP TRIGGER IF EXISTS trg_log_relationship_change ON falukant_data.relationship;
CREATE TRIGGER trg_log_relationship_change
AFTER INSERT OR UPDATE OR DELETE ON falukant_data.relationship
FOR EACH ROW
EXECUTE FUNCTION falukant_log.log_relationship_change();
`);
await sequelize.query(`
DROP TRIGGER IF EXISTS trg_log_relationship_change ON falukant_data.marriage_proposals;
CREATE TRIGGER trg_log_relationship_change
AFTER INSERT OR UPDATE OR DELETE ON falukant_data.marriage_proposals
FOR EACH ROW
EXECUTE FUNCTION falukant_log.log_relationship_change();
`);
console.log("✅ relationship_change_log und Trigger sind vorhanden.");
} catch (e) {
console.warn('⚠️ relationship_change_log/Trigger konnten nicht sichergestellt werden:', e?.message || e);
}
// Vorab: Stelle kritische Spalten sicher, damit Index-Erstellung nicht fehlschlägt
console.log("Pre-ensure Taxi columns (traffic_light) ...");
try {