index.post.ts
1.04 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
import { destr } from 'destr'
import { db } from '@/server/fake-db/apps/email'
import type { Email } from '@/server/fake-db/apps/email/types'
export default defineEventHandler(async event => {
const { ids: emailIds, data: dataToUpdate, label } = await readBody(event)
const labelLocal = destr(label)
if (!labelLocal) {
const emailIdsLocal = destr(emailIds) as unknown as Email['id'][]
function updateMailData(email: Email) {
Object.assign(email, dataToUpdate)
}
db.emails.forEach((email: Email) => {
if (emailIdsLocal.includes(email.id))
updateMailData(email)
})
setResponseStatus(event, 200)
return null
}
else {
function updateMailLabels(email: Email) {
const labelIndex = email.labels.indexOf(label)
if (labelIndex === -1)
email.labels.push(label)
else email.labels.splice(labelIndex, 1)
}
db.emails.forEach(email => {
if (emailIds.includes(email.id))
updateMailLabels(email)
})
setResponseStatus(event, 200)
return null
}
})