first commit
This commit is contained in:
58
postgres/migrate_v4_classes_auditlog.sql
Normal file
58
postgres/migrate_v4_classes_auditlog.sql
Normal file
@@ -0,0 +1,58 @@
|
||||
-- ══════════════════════════════════════════════════════════════════════════════
|
||||
-- MIGRATIE v4: Klassen zonder school_year_id + Auditlog tabel
|
||||
-- Uitvoeren op bestaande installaties:
|
||||
-- docker exec -i leerdoelen_db psql -U leerdoelen leerdoelen < postgres/migrate_v4_classes_auditlog.sql
|
||||
-- ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- 1. Verwijder school_year_id van classes (klassen zijn nu schooljaar-onafhankelijk)
|
||||
DO $$ BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name='classes' AND column_name='school_year_id'
|
||||
) THEN
|
||||
ALTER TABLE classes DROP CONSTRAINT IF EXISTS classes_school_year_id_fkey;
|
||||
ALTER TABLE classes DROP COLUMN school_year_id;
|
||||
RAISE NOTICE 'school_year_id verwijderd van classes';
|
||||
ELSE
|
||||
RAISE NOTICE 'school_year_id bestond al niet — niets te doen';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 2. Unieke constraint op (school_id, name) voor klassen
|
||||
DO $$ BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint WHERE conname = 'uq_class_school_name'
|
||||
) THEN
|
||||
ALTER TABLE classes ADD CONSTRAINT uq_class_school_name UNIQUE (school_id, name);
|
||||
RAISE NOTICE 'Unique constraint uq_class_school_name toegevoegd';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 3. Auditlog tabel aanmaken
|
||||
CREATE TABLE IF NOT EXISTS audit_logs (
|
||||
id SERIAL PRIMARY KEY,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
user_id INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
school_id INTEGER REFERENCES schools(id) ON DELETE SET NULL,
|
||||
action VARCHAR(50) NOT NULL,
|
||||
category VARCHAR(20) NOT NULL,
|
||||
target_type VARCHAR(50),
|
||||
target_id VARCHAR(100),
|
||||
detail TEXT,
|
||||
ip_address VARCHAR(45)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_audit_logs_timestamp ON audit_logs(timestamp);
|
||||
CREATE INDEX IF NOT EXISTS ix_audit_logs_action ON audit_logs(action);
|
||||
CREATE INDEX IF NOT EXISTS ix_audit_logs_category ON audit_logs(category);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Controleer resultaat
|
||||
SELECT 'classes kolommen:' AS info;
|
||||
SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'classes' ORDER BY ordinal_position;
|
||||
|
||||
SELECT 'audit_logs tabel:' AS info;
|
||||
SELECT COUNT(*) AS entries FROM audit_logs;
|
||||
Reference in New Issue
Block a user