diff --git a/supabase/migrations/20260719000000_expand_student_intake.sql b/supabase/migrations/20260719000000_expand_student_intake.sql deleted file mode 100644 index 35509be..0000000 --- a/supabase/migrations/20260719000000_expand_student_intake.sql +++ /dev/null @@ -1,89 +0,0 @@ --- Expand student intake to match Bayside Academy's paper forms: --- Student Information Form + Authorized Persons Pick-Up Form. - --- ── Extra columns on students ──────────────────────────────────────────────── -ALTER TABLE public.students - ADD COLUMN IF NOT EXISTS gender TEXT, - ADD COLUMN IF NOT EXISTS grade_level TEXT, - ADD COLUMN IF NOT EXISTS preferred_start_date DATE, - -- health (allergies TEXT already exists) - ADD COLUMN IF NOT EXISTS chronic_conditions TEXT, - ADD COLUMN IF NOT EXISTS primary_physician TEXT, - ADD COLUMN IF NOT EXISTS physician_phone TEXT, - -- academic - ADD COLUMN IF NOT EXISTS home_ed_eval_due DATE, - ADD COLUMN IF NOT EXISTS previous_schools TEXT, - ADD COLUMN IF NOT EXISTS special_needs TEXT, - ADD COLUMN IF NOT EXISTS portfolio_keeper TEXT, -- 'parent' | 'bayside' - ADD COLUMN IF NOT EXISTS disciplinary_history TEXT, - ADD COLUMN IF NOT EXISTS custody_agreement TEXT, -- explanation; blank = none - -- independent dismissal - ADD COLUMN IF NOT EXISTS dismissal_methods TEXT[] NOT NULL DEFAULT '{}', - ADD COLUMN IF NOT EXISTS dismissal_other TEXT, - ADD COLUMN IF NOT EXISTS backup_transport_plan TEXT, - -- additional - ADD COLUMN IF NOT EXISTS interests TEXT, - ADD COLUMN IF NOT EXISTS other_info TEXT, - -- agreement - ADD COLUMN IF NOT EXISTS agreement_signed_by TEXT, - ADD COLUMN IF NOT EXISTS agreement_signed_date DATE; - --- ── Primary / secondary guardians ──────────────────────────────────────────── -CREATE TABLE IF NOT EXISTS public.student_guardians ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - student_id UUID NOT NULL REFERENCES public.students(id) ON DELETE CASCADE, - is_primary BOOLEAN NOT NULL DEFAULT TRUE, - full_name TEXT NOT NULL, - relationship TEXT, - phone TEXT, - address TEXT, - city TEXT, - state TEXT, - zip TEXT, - email TEXT, - employer TEXT, - created_at TIMESTAMPTZ NOT NULL DEFAULT now() -); -CREATE INDEX IF NOT EXISTS idx_student_guardians_student ON public.student_guardians(student_id); -ALTER TABLE public.student_guardians ENABLE ROW LEVEL SECURITY; - -CREATE POLICY "guardians read" ON public.student_guardians FOR SELECT TO authenticated - USING ( - public.current_user_has_role('admin') - OR public.is_parent_of(student_id) - OR public.teaches_student(student_id) - ); -CREATE POLICY "guardians write parent or admin" ON public.student_guardians FOR ALL TO authenticated - USING (public.current_user_has_role('admin') OR public.is_parent_of(student_id)) - WITH CHECK (public.current_user_has_role('admin') OR public.is_parent_of(student_id)); - --- ── Curriculum platform logins (repeatable) ────────────────────────────────── -CREATE TABLE IF NOT EXISTS public.student_curriculum_logins ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - student_id UUID NOT NULL REFERENCES public.students(id) ON DELETE CASCADE, - website TEXT, - student_login TEXT, - student_password TEXT, - parent_account TEXT, - parent_password TEXT, - created_at TIMESTAMPTZ NOT NULL DEFAULT now() -); -CREATE INDEX IF NOT EXISTS idx_curriculum_logins_student ON public.student_curriculum_logins(student_id); -ALTER TABLE public.student_curriculum_logins ENABLE ROW LEVEL SECURITY; - -CREATE POLICY "curriculum read" ON public.student_curriculum_logins FOR SELECT TO authenticated - USING ( - public.current_user_has_role('admin') - OR public.is_parent_of(student_id) - OR public.teaches_student(student_id) - ); -CREATE POLICY "curriculum write parent or admin" ON public.student_curriculum_logins FOR ALL TO authenticated - USING (public.current_user_has_role('admin') OR public.is_parent_of(student_id)) - WITH CHECK (public.current_user_has_role('admin') OR public.is_parent_of(student_id)); - --- ── Authorized pickups: also hold emergency contacts + notes ───────────────── -ALTER TABLE public.authorized_pickups - ADD COLUMN IF NOT EXISTS alt_phone TEXT, - ADD COLUMN IF NOT EXISTS notes TEXT, - ADD COLUMN IF NOT EXISTS kind TEXT NOT NULL DEFAULT 'pickup', -- 'pickup' | 'emergency' - ADD COLUMN IF NOT EXISTS sort_order INTEGER NOT NULL DEFAULT 0;