mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-25 04:51:13 -05:00
Refactor: Approve tool use
This commit is contained in:
@@ -4718,6 +4718,38 @@ export type Database = {
|
|||||||
}
|
}
|
||||||
Relationships: []
|
Relationships: []
|
||||||
}
|
}
|
||||||
|
submission_item_temp_refs: {
|
||||||
|
Row: {
|
||||||
|
created_at: string
|
||||||
|
id: string
|
||||||
|
ref_order_index: number
|
||||||
|
ref_type: string
|
||||||
|
submission_item_id: string
|
||||||
|
}
|
||||||
|
Insert: {
|
||||||
|
created_at?: string
|
||||||
|
id?: string
|
||||||
|
ref_order_index: number
|
||||||
|
ref_type: string
|
||||||
|
submission_item_id: string
|
||||||
|
}
|
||||||
|
Update: {
|
||||||
|
created_at?: string
|
||||||
|
id?: string
|
||||||
|
ref_order_index?: number
|
||||||
|
ref_type?: string
|
||||||
|
submission_item_id?: string
|
||||||
|
}
|
||||||
|
Relationships: [
|
||||||
|
{
|
||||||
|
foreignKeyName: "submission_item_temp_refs_submission_item_id_fkey"
|
||||||
|
columns: ["submission_item_id"]
|
||||||
|
isOneToOne: false
|
||||||
|
referencedRelation: "submission_items"
|
||||||
|
referencedColumns: ["id"]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
submission_items: {
|
submission_items: {
|
||||||
Row: {
|
Row: {
|
||||||
action_type: string | null
|
action_type: string | null
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
-- =====================================================
|
||||||
|
-- Temporary Reference Storage for Composite Submissions
|
||||||
|
-- =====================================================
|
||||||
|
-- Stores _temp_*_ref fields extracted from submission items
|
||||||
|
-- These are used during approval to resolve dependencies
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.submission_item_temp_refs (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
submission_item_id UUID NOT NULL REFERENCES public.submission_items(id) ON DELETE CASCADE,
|
||||||
|
ref_type TEXT NOT NULL CHECK (ref_type IN (
|
||||||
|
'operator', 'property_owner', 'manufacturer', 'designer',
|
||||||
|
'park', 'ride', 'ride_model', 'location'
|
||||||
|
)),
|
||||||
|
ref_order_index INTEGER NOT NULL,
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Indexes for performance
|
||||||
|
CREATE INDEX idx_submission_item_temp_refs_item_id
|
||||||
|
ON public.submission_item_temp_refs(submission_item_id);
|
||||||
|
|
||||||
|
CREATE INDEX idx_submission_item_temp_refs_type
|
||||||
|
ON public.submission_item_temp_refs(ref_type);
|
||||||
|
|
||||||
|
-- Composite index for fast lookups during approval
|
||||||
|
CREATE INDEX idx_submission_item_temp_refs_item_type
|
||||||
|
ON public.submission_item_temp_refs(submission_item_id, ref_type);
|
||||||
|
|
||||||
|
-- Enable RLS
|
||||||
|
ALTER TABLE public.submission_item_temp_refs ENABLE ROW LEVEL SECURITY;
|
||||||
|
|
||||||
|
-- RLS Policy: Moderators can view all temp refs
|
||||||
|
CREATE POLICY "Moderators can view all temp refs"
|
||||||
|
ON public.submission_item_temp_refs
|
||||||
|
FOR SELECT
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND
|
||||||
|
((NOT has_mfa_enabled(auth.uid())) OR has_aal2())
|
||||||
|
);
|
||||||
|
|
||||||
|
-- RLS Policy: Users can view their own temp refs via submission ownership
|
||||||
|
CREATE POLICY "Users can view their own temp refs"
|
||||||
|
ON public.submission_item_temp_refs
|
||||||
|
FOR SELECT
|
||||||
|
USING (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM public.submission_items si
|
||||||
|
JOIN public.content_submissions cs ON cs.id = si.submission_id
|
||||||
|
WHERE si.id = submission_item_temp_refs.submission_item_id
|
||||||
|
AND cs.user_id = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- RLS Policy: System can insert temp refs during submission creation
|
||||||
|
CREATE POLICY "System can insert temp refs"
|
||||||
|
ON public.submission_item_temp_refs
|
||||||
|
FOR INSERT
|
||||||
|
WITH CHECK (
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM public.submission_items si
|
||||||
|
JOIN public.content_submissions cs ON cs.id = si.submission_id
|
||||||
|
WHERE si.id = submission_item_temp_refs.submission_item_id
|
||||||
|
AND cs.user_id = auth.uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- RLS Policy: Moderators can delete temp refs (manual cleanup if needed)
|
||||||
|
CREATE POLICY "Moderators can delete temp refs"
|
||||||
|
ON public.submission_item_temp_refs
|
||||||
|
FOR DELETE
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND
|
||||||
|
((NOT has_mfa_enabled(auth.uid())) OR has_aal2())
|
||||||
|
);
|
||||||
|
|
||||||
|
COMMENT ON TABLE public.submission_item_temp_refs IS
|
||||||
|
'Stores temporary reference fields (_temp_operator_ref, etc.) from submission items for composite submissions. Cleaned up automatically when items are approved.';
|
||||||
|
|
||||||
|
COMMENT ON COLUMN public.submission_item_temp_refs.ref_type IS
|
||||||
|
'The entity type being referenced (e.g., operator, park, manufacturer). Extracted from _temp_operator_ref -> operator.';
|
||||||
|
|
||||||
|
COMMENT ON COLUMN public.submission_item_temp_refs.ref_order_index IS
|
||||||
|
'The array index of the referenced item in the submission order. Matches the order_index of the target submission_item.';
|
||||||
Reference in New Issue
Block a user