mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 12:51:14 -05:00
Fix remaining JSONB references
This commit is contained in:
@@ -32,18 +32,6 @@ export function isReviewWithPhotos(content: any): boolean {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Type guard: Check if content is a photo submission with JSONB photos
|
||||
*/
|
||||
export function isPhotoSubmissionWithJsonb(content: any): boolean {
|
||||
return (
|
||||
content &&
|
||||
typeof content === 'object' &&
|
||||
content.content &&
|
||||
Array.isArray(content.content.photos) &&
|
||||
content.content.photos.length > 0
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize photo data from any source to PhotoItem[]
|
||||
|
||||
@@ -73,9 +73,8 @@ export async function trackRequest<T>(
|
||||
}
|
||||
: { type: 'UnknownError', message: String(error), stack: undefined };
|
||||
|
||||
// Capture breadcrumbs and environment
|
||||
// Capture breadcrumbs only (environment stored as direct columns)
|
||||
const breadcrumbs = breadcrumbManager.getAll();
|
||||
const environment = captureEnvironmentContext();
|
||||
|
||||
// Log error to database (fire and forget)
|
||||
logRequestMetadata({
|
||||
@@ -89,7 +88,6 @@ export async function trackRequest<T>(
|
||||
errorMessage: errorInfo.message,
|
||||
errorStack: errorInfo.stack,
|
||||
breadcrumbs,
|
||||
environmentContext: environment,
|
||||
userAgent: context.userAgent,
|
||||
clientVersion: context.clientVersion,
|
||||
parentRequestId: options.parentRequestId,
|
||||
@@ -116,7 +114,6 @@ interface RequestMetadata {
|
||||
errorMessage?: string;
|
||||
errorStack?: string;
|
||||
breadcrumbs?: any[];
|
||||
environmentContext?: any;
|
||||
userAgent?: string;
|
||||
clientVersion?: string;
|
||||
parentRequestId?: string;
|
||||
@@ -136,7 +133,7 @@ async function logRequestMetadata(metadata: RequestMetadata): Promise<void> {
|
||||
p_error_message: metadata.errorMessage ?? undefined,
|
||||
p_error_stack: metadata.errorStack ?? undefined,
|
||||
p_breadcrumbs: metadata.breadcrumbs ? JSON.stringify(metadata.breadcrumbs) : '[]',
|
||||
p_environment_context: metadata.environmentContext ? JSON.stringify(metadata.environmentContext) : '{}',
|
||||
p_environment_context: '{}', // No longer used - environment stored as direct columns
|
||||
p_user_agent: metadata.userAgent ?? undefined,
|
||||
p_client_version: metadata.clientVersion ?? undefined,
|
||||
p_parent_request_id: metadata.parentRequestId ?? undefined,
|
||||
|
||||
@@ -218,33 +218,31 @@ export function generateRandomRideModel(manufacturerId: string, counter: number)
|
||||
// Cleanup utilities
|
||||
export async function clearTestData(): Promise<{ deleted: number }> {
|
||||
try {
|
||||
// Find all test submissions using proper JSON path query
|
||||
const { data: testSubmissions, error: fetchError } = await supabase
|
||||
.from('content_submissions')
|
||||
.select('id')
|
||||
.eq('status', 'pending')
|
||||
.eq('content->metadata->>is_test_data', 'true');
|
||||
// Find all test submissions by querying submission_metadata
|
||||
const { data: testMetadata, error: metadataError } = await supabase
|
||||
.from('submission_metadata')
|
||||
.select('submission_id')
|
||||
.eq('metadata_key', 'is_test_data')
|
||||
.eq('metadata_value', 'true');
|
||||
|
||||
if (fetchError) throw fetchError;
|
||||
if (metadataError) throw metadataError;
|
||||
|
||||
const submissionCount = testSubmissions?.length || 0;
|
||||
const submissionIds = testMetadata?.map(m => m.submission_id) || [];
|
||||
const submissionCount = submissionIds.length;
|
||||
|
||||
// Delete submissions if found
|
||||
if (submissionCount > 0) {
|
||||
const batchSize = 100;
|
||||
let totalDeleted = 0;
|
||||
|
||||
for (let i = 0; i < testSubmissions.length; i += batchSize) {
|
||||
const batch = testSubmissions.slice(i, i + batchSize);
|
||||
const ids = batch.map(s => s.id);
|
||||
for (let i = 0; i < submissionIds.length; i += batchSize) {
|
||||
const batch = submissionIds.slice(i, i + batchSize);
|
||||
|
||||
const { error: deleteError } = await supabase
|
||||
.from('content_submissions')
|
||||
.delete()
|
||||
.in('id', ids);
|
||||
.in('id', batch);
|
||||
|
||||
if (deleteError) throw deleteError;
|
||||
totalDeleted += ids.length;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,13 +275,28 @@ export async function getTestDataStats(): Promise<{
|
||||
rides: number;
|
||||
ride_models: number;
|
||||
}> {
|
||||
// Use proper JSON path query for nested metadata
|
||||
const { data, error } = await supabase
|
||||
.from('content_submissions')
|
||||
.select('status')
|
||||
.eq('content->metadata->>is_test_data', 'true');
|
||||
// Query submission_metadata to find test submissions
|
||||
const { data: testMetadata, error: metadataError } = await supabase
|
||||
.from('submission_metadata')
|
||||
.select('submission_id')
|
||||
.eq('metadata_key', 'is_test_data')
|
||||
.eq('metadata_value', 'true');
|
||||
|
||||
if (error) throw error;
|
||||
if (metadataError) throw metadataError;
|
||||
|
||||
const submissionIds = testMetadata?.map(m => m.submission_id) || [];
|
||||
|
||||
// Get statuses for test submissions
|
||||
let data: Array<{ status: string }> = [];
|
||||
if (submissionIds.length > 0) {
|
||||
const { data: submissions, error } = await supabase
|
||||
.from('content_submissions')
|
||||
.select('status')
|
||||
.in('id', submissionIds);
|
||||
|
||||
if (error) throw error;
|
||||
data = submissions || [];
|
||||
}
|
||||
|
||||
// Get registry counts for available dependencies
|
||||
const { data: registryData } = await supabase
|
||||
@@ -296,9 +309,9 @@ export async function getTestDataStats(): Promise<{
|
||||
}, {} as Record<string, number>) || {};
|
||||
|
||||
const stats = {
|
||||
total: data?.length || 0,
|
||||
pending: data?.filter(s => s.status === 'pending').length || 0,
|
||||
approved: data?.filter(s => s.status === 'approved').length || 0,
|
||||
total: data.length,
|
||||
pending: data.filter(s => s.status === 'pending').length,
|
||||
approved: data.filter(s => s.status === 'approved').length,
|
||||
operators: registryCounts['operator'] || 0,
|
||||
property_owners: registryCounts['property_owner'] || 0,
|
||||
manufacturers: registryCounts['manufacturer'] || 0,
|
||||
|
||||
Reference in New Issue
Block a user