Agenda refactor

This commit is contained in:
alma 2026-01-14 17:27:17 +01:00
parent ac4617a874
commit c549e34c8e

View File

@ -448,50 +448,6 @@ export default async function CalendarPage() {
}
}
// Clean up orphaned syncs (syncs with mailCredentialId that no longer exists)
// This can happen when a user deletes and re-adds an email account
const allMailCredentialIds = new Set([
...infomaniakAccounts.map(acc => acc.id),
...microsoftAccounts.map(acc => acc.id)
]);
const orphanedSyncs = await prisma.calendarSync.findMany({
where: {
calendar: {
userId: session?.user?.id || ''
},
mailCredentialId: {
not: null
}
},
include: {
calendar: true,
mailCredential: true
}
});
// Delete syncs where mailCredential no longer exists
for (const sync of orphanedSyncs) {
if (sync.mailCredentialId && !allMailCredentialIds.has(sync.mailCredentialId)) {
console.log(`[AGENDA] Deleting orphaned sync for non-existent mailCredentialId: ${sync.mailCredentialId}`);
// Delete the calendar if it has no events
const eventCount = await prisma.event.count({
where: { calendarId: sync.calendarId }
});
if (eventCount === 0) {
await prisma.calendar.delete({
where: { id: sync.calendarId }
});
} else {
// Just disable the sync, keep the calendar
await prisma.calendarSync.update({
where: { id: sync.id },
data: { syncEnabled: false }
});
}
}
}
// Clean up duplicate calendars for the same mailCredentialId
// Keep only the most recent one with syncEnabled=true, delete others
const allSyncs = await prisma.calendarSync.findMany({