mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 07:51:13 -05:00
Fix timeline event updates and edge function
Update `update_entity_from_submission` and `delete_entity_from_submission` to support timeline events. Remove unused `p_idempotency_key` parameter from `process_approval_transaction` RPC call in `process-selective-approval` edge function.
This commit is contained in:
@@ -178,8 +178,7 @@ const handler = async (req: Request) => {
|
|||||||
p_item_ids: itemIds,
|
p_item_ids: itemIds,
|
||||||
p_moderator_id: user.id,
|
p_moderator_id: user.id,
|
||||||
p_submitter_id: submission.user_id,
|
p_submitter_id: submission.user_id,
|
||||||
p_request_id: requestId,
|
p_request_id: requestId
|
||||||
p_idempotency_key: idempotencyKey
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,146 @@
|
|||||||
|
-- ============================================================================
|
||||||
|
-- Fix Timeline Event Updates and Deletes
|
||||||
|
-- Adds support for timeline_event and milestone entity types
|
||||||
|
-- ============================================================================
|
||||||
|
|
||||||
|
-- Update function to support timeline event updates
|
||||||
|
CREATE OR REPLACE FUNCTION update_entity_from_submission(
|
||||||
|
p_entity_type TEXT,
|
||||||
|
p_data JSONB,
|
||||||
|
p_entity_id UUID,
|
||||||
|
p_updated_by UUID
|
||||||
|
)
|
||||||
|
RETURNS UUID
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
SECURITY DEFINER
|
||||||
|
SET search_path = public
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
CASE p_entity_type
|
||||||
|
WHEN 'park' THEN
|
||||||
|
UPDATE parks SET
|
||||||
|
name = COALESCE(p_data->>'name', name),
|
||||||
|
slug = COALESCE(p_data->>'slug', slug),
|
||||||
|
description = COALESCE(p_data->>'description', description),
|
||||||
|
park_type = COALESCE(p_data->>'park_type', park_type),
|
||||||
|
status = COALESCE(p_data->>'status', status),
|
||||||
|
location_id = COALESCE((p_data->>'location_id')::UUID, location_id),
|
||||||
|
operator_id = COALESCE((p_data->>'operator_id')::UUID, operator_id),
|
||||||
|
property_owner_id = COALESCE((p_data->>'property_owner_id')::UUID, property_owner_id),
|
||||||
|
opening_date = COALESCE((p_data->>'opening_date')::DATE, opening_date),
|
||||||
|
closing_date = COALESCE((p_data->>'closing_date')::DATE, closing_date),
|
||||||
|
opening_date_precision = COALESCE(p_data->>'opening_date_precision', opening_date_precision),
|
||||||
|
closing_date_precision = COALESCE(p_data->>'closing_date_precision', closing_date_precision),
|
||||||
|
website_url = COALESCE(p_data->>'website_url', website_url),
|
||||||
|
phone = COALESCE(p_data->>'phone', phone),
|
||||||
|
email = COALESCE(p_data->>'email', email),
|
||||||
|
banner_image_url = COALESCE(p_data->>'banner_image_url', banner_image_url),
|
||||||
|
banner_image_id = COALESCE(p_data->>'banner_image_id', banner_image_id),
|
||||||
|
card_image_url = COALESCE(p_data->>'card_image_url', card_image_url),
|
||||||
|
card_image_id = COALESCE(p_data->>'card_image_id', card_image_id),
|
||||||
|
updated_at = NOW()
|
||||||
|
WHERE id = p_entity_id;
|
||||||
|
|
||||||
|
WHEN 'ride' THEN
|
||||||
|
UPDATE rides SET
|
||||||
|
name = COALESCE(p_data->>'name', name),
|
||||||
|
slug = COALESCE(p_data->>'slug', slug),
|
||||||
|
park_id = COALESCE((p_data->>'park_id')::UUID, park_id),
|
||||||
|
ride_type = COALESCE(p_data->>'ride_type', ride_type),
|
||||||
|
status = COALESCE(p_data->>'status', status),
|
||||||
|
manufacturer_id = COALESCE((p_data->>'manufacturer_id')::UUID, manufacturer_id),
|
||||||
|
ride_model_id = COALESCE((p_data->>'ride_model_id')::UUID, ride_model_id),
|
||||||
|
opening_date = COALESCE((p_data->>'opening_date')::DATE, opening_date),
|
||||||
|
closing_date = COALESCE((p_data->>'closing_date')::DATE, closing_date),
|
||||||
|
opening_date_precision = COALESCE(p_data->>'opening_date_precision', opening_date_precision),
|
||||||
|
closing_date_precision = COALESCE(p_data->>'closing_date_precision', closing_date_precision),
|
||||||
|
description = COALESCE(p_data->>'description', description),
|
||||||
|
banner_image_url = COALESCE(p_data->>'banner_image_url', banner_image_url),
|
||||||
|
banner_image_id = COALESCE(p_data->>'banner_image_id', banner_image_id),
|
||||||
|
card_image_url = COALESCE(p_data->>'card_image_url', card_image_url),
|
||||||
|
card_image_id = COALESCE(p_data->>'card_image_id', card_image_id),
|
||||||
|
updated_at = NOW()
|
||||||
|
WHERE id = p_entity_id;
|
||||||
|
|
||||||
|
WHEN 'manufacturer', 'operator', 'property_owner', 'designer' THEN
|
||||||
|
UPDATE companies SET
|
||||||
|
name = COALESCE(p_data->>'name', name),
|
||||||
|
slug = COALESCE(p_data->>'slug', slug),
|
||||||
|
description = COALESCE(p_data->>'description', description),
|
||||||
|
website_url = COALESCE(p_data->>'website_url', website_url),
|
||||||
|
founded_year = COALESCE((p_data->>'founded_year')::INTEGER, founded_year),
|
||||||
|
banner_image_url = COALESCE(p_data->>'banner_image_url', banner_image_url),
|
||||||
|
banner_image_id = COALESCE(p_data->>'banner_image_id', banner_image_id),
|
||||||
|
card_image_url = COALESCE(p_data->>'card_image_url', card_image_url),
|
||||||
|
card_image_id = COALESCE(p_data->>'card_image_id', card_image_id),
|
||||||
|
updated_at = NOW()
|
||||||
|
WHERE id = p_entity_id;
|
||||||
|
|
||||||
|
WHEN 'ride_model' THEN
|
||||||
|
UPDATE ride_models SET
|
||||||
|
name = COALESCE(p_data->>'name', name),
|
||||||
|
slug = COALESCE(p_data->>'slug', slug),
|
||||||
|
manufacturer_id = COALESCE((p_data->>'manufacturer_id')::UUID, manufacturer_id),
|
||||||
|
ride_type = COALESCE(p_data->>'ride_type', ride_type),
|
||||||
|
description = COALESCE(p_data->>'description', description),
|
||||||
|
banner_image_url = COALESCE(p_data->>'banner_image_url', banner_image_url),
|
||||||
|
banner_image_id = COALESCE(p_data->>'banner_image_id', banner_image_id),
|
||||||
|
card_image_url = COALESCE(p_data->>'card_image_url', card_image_url),
|
||||||
|
card_image_id = COALESCE(p_data->>'card_image_id', card_image_id),
|
||||||
|
updated_at = NOW()
|
||||||
|
WHERE id = p_entity_id;
|
||||||
|
|
||||||
|
WHEN 'timeline_event', 'milestone' THEN
|
||||||
|
UPDATE entity_timeline_events SET
|
||||||
|
event_type = COALESCE(p_data->>'event_type', event_type),
|
||||||
|
event_date = COALESCE((p_data->>'event_date')::DATE, event_date),
|
||||||
|
event_date_precision = COALESCE(p_data->>'event_date_precision', event_date_precision),
|
||||||
|
title = COALESCE(p_data->>'title', title),
|
||||||
|
description = COALESCE(p_data->>'description', description),
|
||||||
|
from_value = COALESCE(p_data->>'from_value', from_value),
|
||||||
|
to_value = COALESCE(p_data->>'to_value', to_value),
|
||||||
|
from_entity_id = COALESCE((p_data->>'from_entity_id')::UUID, from_entity_id),
|
||||||
|
to_entity_id = COALESCE((p_data->>'to_entity_id')::UUID, to_entity_id),
|
||||||
|
from_location_id = COALESCE((p_data->>'from_location_id')::UUID, from_location_id),
|
||||||
|
to_location_id = COALESCE((p_data->>'to_location_id')::UUID, to_location_id),
|
||||||
|
updated_at = NOW()
|
||||||
|
WHERE id = p_entity_id;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
RAISE EXCEPTION 'Unsupported entity type for update: %', p_entity_type
|
||||||
|
USING ERRCODE = '22023';
|
||||||
|
END CASE;
|
||||||
|
|
||||||
|
RETURN p_entity_id;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- Update function to support timeline event deletion
|
||||||
|
CREATE OR REPLACE FUNCTION delete_entity_from_submission(
|
||||||
|
p_entity_type TEXT,
|
||||||
|
p_entity_id UUID,
|
||||||
|
p_deleted_by UUID
|
||||||
|
)
|
||||||
|
RETURNS VOID
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
SECURITY DEFINER
|
||||||
|
SET search_path = public
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
CASE p_entity_type
|
||||||
|
WHEN 'park' THEN
|
||||||
|
DELETE FROM parks WHERE id = p_entity_id;
|
||||||
|
WHEN 'ride' THEN
|
||||||
|
DELETE FROM rides WHERE id = p_entity_id;
|
||||||
|
WHEN 'manufacturer', 'operator', 'property_owner', 'designer' THEN
|
||||||
|
DELETE FROM companies WHERE id = p_entity_id;
|
||||||
|
WHEN 'ride_model' THEN
|
||||||
|
DELETE FROM ride_models WHERE id = p_entity_id;
|
||||||
|
WHEN 'timeline_event', 'milestone' THEN
|
||||||
|
DELETE FROM entity_timeline_events WHERE id = p_entity_id;
|
||||||
|
ELSE
|
||||||
|
RAISE EXCEPTION 'Unsupported entity type for deletion: %', p_entity_type
|
||||||
|
USING ERRCODE = '22023';
|
||||||
|
END CASE;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
Reference in New Issue
Block a user