diff --git a/src/components/admin/SystemActivityLog.tsx b/src/components/admin/SystemActivityLog.tsx index d2f059c8..96f235a8 100644 --- a/src/components/admin/SystemActivityLog.tsx +++ b/src/components/admin/SystemActivityLog.tsx @@ -514,10 +514,10 @@ export const SystemActivityLog = forwardRef )} - {isExpanded && details.review_text && ( + {isExpanded && details.content && (

- "{details.review_text}" + "{details.content}"

)} @@ -546,10 +546,10 @@ export const SystemActivityLog = forwardReffrom {details.entity_name} )} - {isExpanded && details.review_text && ( + {isExpanded && details.content && (

- "{details.review_text}" + "{details.content}"

)} diff --git a/src/integrations/supabase/types.ts b/src/integrations/supabase/types.ts index d3ee5e0d..5011cbc6 100644 --- a/src/integrations/supabase/types.ts +++ b/src/integrations/supabase/types.ts @@ -1900,6 +1900,7 @@ export type Database = { } review_deletions: { Row: { + content: string | null created_at: string deleted_at: string | null deleted_by: string | null @@ -1908,12 +1909,12 @@ export type Database = { park_id: string | null rating: number review_id: string - review_text: string | null ride_id: string | null user_id: string was_moderated: boolean | null } Insert: { + content?: string | null created_at: string deleted_at?: string | null deleted_by?: string | null @@ -1922,12 +1923,12 @@ export type Database = { park_id?: string | null rating: number review_id: string - review_text?: string | null ride_id?: string | null user_id: string was_moderated?: boolean | null } Update: { + content?: string | null created_at?: string deleted_at?: string | null deleted_by?: string | null @@ -1936,7 +1937,6 @@ export type Database = { park_id?: string | null rating?: number review_id?: string - review_text?: string | null ride_id?: string | null user_id?: string was_moderated?: boolean | null diff --git a/src/lib/systemActivityService.ts b/src/lib/systemActivityService.ts index c58cdf3b..6e0d9b6a 100644 --- a/src/lib/systemActivityService.ts +++ b/src/lib/systemActivityService.ts @@ -94,7 +94,7 @@ export interface ReviewLifecycleDetails { entity_id: string; entity_name?: string; rating?: number; - review_text?: string; + content?: string; deletion_reason?: string; was_moderated?: boolean; } @@ -590,14 +590,14 @@ export async function fetchSystemActivities( // Fetch review lifecycle events // 1. Review creations (recent 7 days) - const { data: newReviews, error: reviewsError } = await supabase + const { data: newReviews, error: newReviewsError } = await supabase .from('reviews') - .select('id, user_id, park_id, ride_id, rating, review_text, created_at') + .select('id, user_id, park_id, ride_id, rating, content, created_at') .gte('created_at', sevenDaysAgo.toISOString()) .order('created_at', { ascending: false }) .limit(Math.ceil(limit / 2)); - if (!reviewsError && newReviews) { + if (!newReviewsError && newReviews) { for (const review of newReviews) { const entityType = review.park_id ? 'park' : 'ride'; const entityId = review.park_id || review.ride_id; @@ -614,20 +614,20 @@ export async function fetchSystemActivities( entity_type: entityType as 'park' | 'ride', entity_id: entityId!, rating: review.rating, - review_text: review.review_text, + content: review.content, } as ReviewLifecycleDetails, }); } } // 2. Review deletions - const { data: deletedReviews, error: deletionsError } = await supabase + const { data: deletedReviews, error: deletedReviewsError } = await supabase .from('review_deletions') - .select('id, review_id, user_id, park_id, ride_id, rating, review_text, deleted_by, deleted_at, deletion_reason, was_moderated') + .select('id, review_id, user_id, park_id, ride_id, rating, content, deleted_by, deleted_at, deletion_reason, was_moderated') .order('deleted_at', { ascending: false }) .limit(limit); - if (!deletionsError && deletedReviews) { + if (!deletedReviewsError && deletedReviews) { for (const deletion of deletedReviews) { const entityType = deletion.park_id ? 'park' : 'ride'; const entityId = deletion.park_id || deletion.ride_id; @@ -644,7 +644,7 @@ export async function fetchSystemActivities( entity_type: entityType as 'park' | 'ride', entity_id: entityId!, rating: deletion.rating, - review_text: deletion.review_text || undefined, + content: deletion.content || undefined, deletion_reason: deletion.deletion_reason || undefined, was_moderated: deletion.was_moderated, } as ReviewLifecycleDetails, diff --git a/supabase/migrations/20251017202844_4fe235d4-2e37-453d-a153-80147da59906.sql b/supabase/migrations/20251017202844_4fe235d4-2e37-453d-a153-80147da59906.sql new file mode 100644 index 00000000..173ad97f --- /dev/null +++ b/supabase/migrations/20251017202844_4fe235d4-2e37-453d-a153-80147da59906.sql @@ -0,0 +1,43 @@ +-- Update review_deletions table to use correct column name +ALTER TABLE public.review_deletions + RENAME COLUMN review_text TO content; + +-- Update the trigger function to use correct column name +CREATE OR REPLACE FUNCTION public.log_review_deletion() +RETURNS TRIGGER +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path = public +AS $$ +BEGIN + -- Insert into review_deletions table + INSERT INTO public.review_deletions ( + review_id, + user_id, + park_id, + ride_id, + rating, + content, + deleted_by, + deletion_reason, + was_moderated, + created_at + ) VALUES ( + OLD.id, + OLD.user_id, + OLD.park_id, + OLD.ride_id, + OLD.rating, + OLD.content, + auth.uid(), + CASE + WHEN OLD.moderation_status = 'rejected' THEN 'Rejected by moderator' + ELSE 'Deleted by user or admin' + END, + OLD.moderation_status != 'approved', + OLD.created_at + ); + + RETURN OLD; +END; +$$; \ No newline at end of file