Modified by www.SourceFiles.app
This commit is contained in:
@@ -0,0 +1,89 @@
|
|||||||
|
-- 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;
|
||||||
Reference in New Issue
Block a user