Files
thrilltrack-explorer/supabase/migrations/20251106150117_a68ffa22-8213-468c-ab63-bad580073a8b.sql
gpt-engineer-app[bot] ed9d17bf10 Fix ride model technical specs
Implement plan to fix ride model technical specifications pipeline. This includes creating a new migration for the `ride_model_submission_technical_specifications` table, updating `entitySubmissionHelpers.ts` to handle insertion of technical specifications, and modifying the edge function `process-selective-approval/index.ts` to fetch these specifications. This ensures no data loss for ride model technical specifications.
2025-11-06 15:03:51 +00:00

84 lines
2.9 KiB
SQL

-- Create submission table for ride model technical specifications
-- This ensures technical specs flow through the submission pipeline without data loss
CREATE TABLE ride_model_submission_technical_specifications (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
ride_model_submission_id UUID NOT NULL,
spec_name TEXT NOT NULL,
spec_value TEXT NOT NULL,
spec_unit TEXT,
category TEXT,
display_order INTEGER DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT now(),
CONSTRAINT fk_ride_model_submission
FOREIGN KEY (ride_model_submission_id)
REFERENCES ride_model_submissions(id)
ON DELETE CASCADE,
CONSTRAINT unique_ride_model_submission_spec
UNIQUE(ride_model_submission_id, spec_name)
);
CREATE INDEX idx_ride_model_submission_specs_submission
ON ride_model_submission_technical_specifications(ride_model_submission_id);
-- Enable RLS
ALTER TABLE ride_model_submission_technical_specifications ENABLE ROW LEVEL SECURITY;
-- Moderators can view all submission specs
CREATE POLICY "Moderators can view all ride model submission specs"
ON ride_model_submission_technical_specifications
FOR SELECT
USING (
is_moderator(auth.uid()) AND
((NOT has_mfa_enabled(auth.uid())) OR has_aal2())
);
-- Users can view their own submission specs
CREATE POLICY "Users can view their own ride model submission specs"
ON ride_model_submission_technical_specifications
FOR SELECT
USING (
EXISTS (
SELECT 1 FROM ride_model_submissions rms
JOIN content_submissions cs ON cs.id = rms.submission_id
WHERE rms.id = ride_model_submission_technical_specifications.ride_model_submission_id
AND cs.user_id = auth.uid()
)
);
-- Users can insert their own submission specs
CREATE POLICY "Users can insert their own ride model submission specs"
ON ride_model_submission_technical_specifications
FOR INSERT
WITH CHECK (
EXISTS (
SELECT 1 FROM ride_model_submissions rms
JOIN content_submissions cs ON cs.id = rms.submission_id
WHERE rms.id = ride_model_submission_technical_specifications.ride_model_submission_id
AND cs.user_id = auth.uid()
)
AND NOT is_user_banned(auth.uid())
);
-- Moderators can update submission specs
CREATE POLICY "Moderators can update ride model submission specs"
ON ride_model_submission_technical_specifications
FOR UPDATE
USING (
is_moderator(auth.uid()) AND
((NOT has_mfa_enabled(auth.uid())) OR has_aal2())
);
-- Moderators can delete submission specs
CREATE POLICY "Moderators can delete ride model submission specs"
ON ride_model_submission_technical_specifications
FOR DELETE
USING (
is_moderator(auth.uid()) AND
((NOT has_mfa_enabled(auth.uid())) OR has_aal2())
);
COMMENT ON TABLE ride_model_submission_technical_specifications IS
'Stores technical specifications for ride models during moderation - prevents data loss in submission pipeline';