Added day selection and revamped modal structure
This commit is contained in:
@@ -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,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user