Added day selection and revamped modal structure

This commit is contained in:
Alexis
2024-08-17 11:33:42 +02:00
parent 0d57c70719
commit 7244120219
7 changed files with 243 additions and 112 deletions

View File

@@ -1,5 +1,6 @@
import { serverSupabaseClient } from "#supabase/server";
// import type { Calendar} from "~/models/CalendarConfig";
import type { Calendar} from "~/models/CalendarConfig";
import { postCalendarSchema } from "~/models/CalendarConfig";
export default defineEventHandler(async (event) => {
@@ -7,7 +8,6 @@ export default defineEventHandler(async (event) => {
const { data: bodyData, error: schemaError } = await readValidatedBody(event, body => postCalendarSchema.safeParse(body))
if (schemaError) {
console.log(bodyData)
console.log(schemaError)
throw createError({
cause: 'Utilisateur',
@@ -17,7 +17,8 @@ export default defineEventHandler(async (event) => {
})
}
let calendarObject: any
// Store calendarId for rollback / links
let calendarId: number | null = null
// First insert the calendar
try {
@@ -33,10 +34,68 @@ export default defineEventHandler(async (event) => {
)
.select(`id`)
.single()
console.log(data)
if (data?.id) {
calendarId = data.id
}
if (error) throw error
} catch (err) {
console.log(err)
throw createError({
cause: 'Serveur',
fatal: false,
message: "Une erreur inconnue s'est produite pendant la création du calendrier.",
status: 500,
})
}
// Setup months data
for (let i = 0; i < bodyData.months.length; i++) {
bodyData.months[i].calendar_id = calendarId
bodyData.months[i].position = i
}
// Bulk insert the months
try {
const { error } = await client
.from('calendar_months')
.insert(bodyData.months as never)
if (error) throw error
} catch (err) {
// If we found an error, rollback the calendar
if (calendarId) {
await client
.from('calendars')
.delete()
.eq('id', calendarId)
.single()
}
throw createError({
cause: 'Serveur',
fatal: false,
message: "Une erreur inconnue s'est produite pendant la création des mois du calendrier.",
status: 500,
})
}
if (calendarId) {
try {
return client
.from('calendars')
.select("*")
.eq('id', calendarId)
.limit(1)
.single<Calendar>()
} catch (err) {
throw createError({
cause: 'Serveur',
fatal: false,
message: "Impossible de récupérer les données du calendrier créé.",
status: 500,
})
}
}
})