mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 08:31:12 -05:00
Fix review lifecycle tracking
This commit is contained in:
@@ -514,10 +514,10 @@ export const SystemActivityLog = forwardRef<SystemActivityLogRef, SystemActivity
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
{isExpanded && details.review_text && (
|
||||
{isExpanded && details.content && (
|
||||
<div className="p-3 bg-muted rounded text-sm">
|
||||
<p className="text-muted-foreground line-clamp-3">
|
||||
"{details.review_text}"
|
||||
"{details.content}"
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
@@ -546,10 +546,10 @@ export const SystemActivityLog = forwardRef<SystemActivityLogRef, SystemActivity
|
||||
<span className="text-muted-foreground">from {details.entity_name}</span>
|
||||
)}
|
||||
</div>
|
||||
{isExpanded && details.review_text && (
|
||||
{isExpanded && details.content && (
|
||||
<div className="p-3 bg-muted rounded text-sm">
|
||||
<p className="text-muted-foreground line-clamp-3 opacity-60">
|
||||
"{details.review_text}"
|
||||
"{details.content}"
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
$$;
|
||||
Reference in New Issue
Block a user