45 lines
1.1 KiB
SQL
45 lines
1.1 KiB
SQL
-- Seed rotation config setting for duty schedule generator
|
|
INSERT INTO app_settings (key, value)
|
|
VALUES (
|
|
'rotation_config',
|
|
'{
|
|
"rotation_order": [],
|
|
"friday_am_order": [],
|
|
"excluded_staff_ids": [],
|
|
"initial_am_staff_id": null,
|
|
"initial_pm_staff_id": null
|
|
}'::jsonb
|
|
)
|
|
ON CONFLICT (key) DO NOTHING;
|
|
|
|
-- Ensure admin/dispatcher can upsert app_settings (for rotation config edits).
|
|
-- A policy may already exist; use IF NOT EXISTS pattern via DO block.
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_policies
|
|
WHERE tablename = 'app_settings'
|
|
AND policyname = 'app_settings_admin_upsert'
|
|
) THEN
|
|
EXECUTE $policy$
|
|
CREATE POLICY app_settings_admin_upsert ON app_settings
|
|
FOR ALL TO authenticated
|
|
USING (
|
|
EXISTS (
|
|
SELECT 1 FROM profiles
|
|
WHERE profiles.id = auth.uid()
|
|
AND profiles.role IN ('admin', 'dispatcher')
|
|
)
|
|
)
|
|
WITH CHECK (
|
|
EXISTS (
|
|
SELECT 1 FROM profiles
|
|
WHERE profiles.id = auth.uid()
|
|
AND profiles.role IN ('admin', 'dispatcher')
|
|
)
|
|
)
|
|
$policy$;
|
|
END IF;
|
|
END
|
|
$$;
|