-- v0.3.57-beta: ouderportaal. -- Ouders (role 'parent', school_id NULL) koppelen aan kind-accounts (pupils): -- * parent_children: de koppeling zelf (een kind kan meerdere ouders hebben). -- * users.parent_code: eenmalige code waarmee staf een schoolleerling aan een -- ouder koppelt (code vervalt na gebruik). -- * school_link_requests: aanmeldverzoek van een thuiskind (pupil zonder -- school) bij een school; de school handelt het verzoek af (adopteren, -- koppelen aan een bestaande leerling of afwijzen). CREATE TABLE IF NOT EXISTS parent_children ( parent_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, pupil_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), PRIMARY KEY (parent_id, pupil_id) ); CREATE INDEX IF NOT EXISTS idx_parent_children_pupil ON parent_children(pupil_id); ALTER TABLE users ADD COLUMN IF NOT EXISTS parent_code TEXT; CREATE UNIQUE INDEX IF NOT EXISTS idx_users_parent_code ON users (parent_code) WHERE parent_code IS NOT NULL; CREATE TABLE IF NOT EXISTS school_link_requests ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, school_id BIGINT NOT NULL REFERENCES schools(id) ON DELETE CASCADE, parent_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, pupil_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE (pupil_id, school_id) ); CREATE INDEX IF NOT EXISTS idx_school_link_requests_school ON school_link_requests(school_id);