fixes
All checks were successful
Build And Push Image / docker (push) Successful in 3m54s

This commit is contained in:
2025-08-13 16:47:53 +02:00
parent 4b1a77de90
commit b833826a1e
6 changed files with 677 additions and 227 deletions

View File

@@ -0,0 +1,96 @@
// server/api/admin/fix-event-attendee-counts.post.ts
import { createSessionManager } from '~/server/utils/session';
import { createNocoDBEventsClient } from '~/server/utils/nocodb-events';
export default defineEventHandler(async (event) => {
try {
console.log('[admin/fix-event-attendee-counts] Starting attendee count fix...');
// Verify admin session
const sessionManager = createSessionManager();
const cookieHeader = getHeader(event, 'cookie');
const session = sessionManager.getSession(cookieHeader);
if (!session?.user || session.user.tier !== 'admin') {
throw createError({
statusCode: 403,
statusMessage: 'Admin access required'
});
}
console.log('[admin/fix-event-attendee-counts] Authorized admin user:', session.user.email);
const eventsClient = createNocoDBEventsClient();
// Get all events
const eventsResponse = await eventsClient.findAll({ limit: 1000 });
const events = eventsResponse.list || [];
console.log('[admin/fix-event-attendee-counts] Found', events.length, 'events to process');
const results = [];
// Process each event
for (const eventObj of events) {
try {
const eventId = eventObj.event_id || eventObj.id || (eventObj as any).Id;
const eventTitle = eventObj.title || 'Unknown Event';
console.log('[admin/fix-event-attendee-counts] Processing event:', eventTitle, 'ID:', eventId);
// Force update the attendee count
const newCount = await eventsClient.forceUpdateEventAttendeeCount(eventId.toString());
results.push({
event_id: eventId,
title: eventTitle,
old_count: eventObj.current_attendees || 0,
new_count: newCount,
status: 'success'
});
console.log('[admin/fix-event-attendee-counts] ✅ Fixed event:', eventTitle, 'Count:', newCount);
} catch (eventError: any) {
console.error('[admin/fix-event-attendee-counts] ❌ Error processing event:', eventObj.title, eventError);
results.push({
event_id: eventObj.event_id || eventObj.id,
title: eventObj.title || 'Unknown Event',
old_count: eventObj.current_attendees || 0,
new_count: 0,
status: 'error',
error: eventError.message
});
}
}
const successCount = results.filter(r => r.status === 'success').length;
const errorCount = results.filter(r => r.status === 'error').length;
console.log('[admin/fix-event-attendee-counts] ✅ Fix completed. Success:', successCount, 'Errors:', errorCount);
return {
success: true,
message: `Fixed attendee counts for ${successCount} events (${errorCount} errors)`,
data: {
total_events: events.length,
success_count: successCount,
error_count: errorCount,
results: results
}
};
} catch (error: any) {
console.error('[admin/fix-event-attendee-counts] ❌ Error:', error);
if (error.statusCode) {
throw error;
}
throw createError({
statusCode: 500,
statusMessage: 'Failed to fix event attendee counts'
});
}
});

View File

@@ -135,12 +135,12 @@ export default defineEventHandler(async (event) => {
const newRSVP = await eventsClient.createRSVP(rsvpData);
// Update event attendee count
// Update event attendee count using the new force update method
try {
await updateEventAttendeeCount(eventId);
console.log('[RSVP] ✅ Updated event attendee count for event:', eventId);
const newAttendeeCount = await eventsClient.forceUpdateEventAttendeeCount(eventId);
console.log('[RSVP] ✅ Force updated event attendee count for event:', eventId, 'to:', newAttendeeCount);
} catch (countError) {
console.log('[RSVP] ⚠️ Failed to update attendee count:', countError);
console.log('[RSVP] ⚠️ Failed to force update attendee count:', countError);
// Don't fail the RSVP creation if count update fails
}