index.js
1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import is from '@sindresorhus/is'
import destr from 'destr'
import { HttpResponse, http } from 'msw'
import { db } from '@db/apps/calendar/db'
import { genId } from '@api-utils/genId'
export const handlerAppsCalendar = [
// 👉 Get Calendar Events
http.get(('/api/apps/calendar'), ({ request }) => {
const url = new URL(request.url)
const queries = url.searchParams.getAll('calendars')
const parsedCalendars = destr(queries)
const calendars = is.array(parsedCalendars) ? parsedCalendars : undefined
const events = db.events.filter(event => calendars?.includes(event.extendedProps.calendar))
return HttpResponse.json(events, { status: 200 })
}),
// 👉 Add Calendar Event
http.post(('/api/apps/calendar'), async ({ request }) => {
const event = await request.json()
db.events.push({
...event,
id: genId(db.events),
})
return HttpResponse.json(event, { status: 201 })
}),
// 👉 Update Calendar Event
http.put(('/api/apps/calendar/:id'), async ({ request, params }) => {
const updatedEvent = await request.json()
updatedEvent.id = Number(updatedEvent.id)
const eventId = Number(params.id)
// Find the index of the event in the database
const currentEvent = db.events.find(e => e.id === eventId)
// update event
if (currentEvent) {
Object.assign(currentEvent, updatedEvent)
return HttpResponse.json(currentEvent, {
status: 201,
})
}
return new HttpResponse('Something Went Wrong', { status: 400 })
}),
// 👉 Delete Calendar Event
http.delete(('/api/apps/calendar/:id'), ({ params }) => {
const eventId = Number(params.id)
const eventIndex = db.events.findIndex(e => e.id === eventId)
if (eventIndex !== -1) {
db.events.splice(eventIndex, 1)
return new HttpResponse(null, {
status: 204,
})
}
return new HttpResponse('Something Went Wrong', { status: 400 })
}),
]