From dcd7161a64c49a8b437179fa3218365c2e45772c Mon Sep 17 00:00:00 2001 From: zramsay Date: Wed, 12 Mar 2025 09:48:08 -0400 Subject: [PATCH] ok --- src/app/api/analyze/route.ts | 28 ++++++++++++++++------- src/services/userPointsService.ts | 37 +++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/app/api/analyze/route.ts b/src/app/api/analyze/route.ts index b929639..fd81b56 100644 --- a/src/app/api/analyze/route.ts +++ b/src/app/api/analyze/route.ts @@ -251,14 +251,26 @@ export async function POST(req: NextRequest): Promise { if (pointsUserId && userEmail) { console.log('Awarding points to user:', { pointsUserId, userEmail }); - await awardPointsForImage( - pointsUserId, - userEmail, - buffer, - ipfsUrl, - visionResult.description, - visionResult.mainObject - ).catch(err => console.error('Failed to award points for image:', err)); + try { + const pointsResult = await awardPointsForImage( + pointsUserId, + userEmail, + buffer, + ipfsUrl, + visionResult.description, + visionResult.mainObject + ); + console.log('Points award result:', pointsResult); + } catch (err) { + console.error('Failed to award points for image:', err); + console.error('Points error details:', { + error: err.message || 'Unknown error', + userId: pointsUserId, + userEmail, + imageHash: ipfsUrl ? ipfsUrl.split('/').pop() : 'unknown' + }); + // Continue without points if there's an error + } } else { console.log('Unable to award points, missing user data', { pointsUserId, diff --git a/src/services/userPointsService.ts b/src/services/userPointsService.ts index bd2c035..5a71bbd 100644 --- a/src/services/userPointsService.ts +++ b/src/services/userPointsService.ts @@ -104,6 +104,18 @@ export async function awardPointsForImage( animalType: string ) { try { + // Add safe mode to bypass database operations if needed + // This allows the app to work during database schema transitions + const safeMode = process.env.POINTS_SAFE_MODE === 'true'; + if (safeMode) { + console.log('Points system running in SAFE MODE - bypassing database operations'); + return { + success: true, + points: POINTS.IMAGE_UPLOAD, + message: 'Points system in safe mode, database operations bypassed' + }; + } + if (!userId) { console.warn('Missing user data, cannot award points', { userId, email }); return { @@ -267,6 +279,13 @@ export async function findUserByEmail(email: string) { */ export async function getUserPoints(userId: string) { try { + // Add safe mode to bypass database operations if needed + const safeMode = process.env.POINTS_SAFE_MODE === 'true'; + if (safeMode) { + console.log('Points system running in SAFE MODE - returning default points'); + return 1; // Return 1 as a default so UI shows something + } + if (!userId) { console.warn('Cannot get points for undefined userId'); return 0; @@ -335,6 +354,24 @@ export async function getUserPoints(userId: string) { */ export async function getUserTransactions(userId: string) { try { + // Add safe mode to bypass database operations if needed + const safeMode = process.env.POINTS_SAFE_MODE === 'true'; + if (safeMode) { + console.log('Points system running in SAFE MODE - returning sample transaction'); + // Return a sample transaction for UI display + return [{ + id: 1, + user_id: userId, + points: 1, + transaction_type: 'image_upload', + image_hash: null, + image_url: null, + description: 'Sample transaction during database migration', + animal_type: 'Sample', + created_at: new Date().toISOString() + }]; + } + if (!userId) { console.warn('Cannot get transactions for undefined userId'); return [];