feat: initial commit - Band Management application

This commit is contained in:
2026-01-06 03:11:46 +01:00
commit 34e12e00b3
24543 changed files with 3991790 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
import { destr } from 'destr'
import { db } from '@/server/fake-db/apps/email'
export default defineEventHandler(event => {
const { q = '', filter = 'inbox', label } = destr(getQuery(event))
const queryLowered = q.toLowerCase()
function isInFolder(email) {
if (filter === 'trashed')
return email.isDeleted
if (filter === 'starred')
return email.isStarred && !email.isDeleted
return email.folder === (filter || email.folder) && !email.isDeleted
}
const filteredData = db.emails.filter(email => (email.from.name.toLowerCase().includes(queryLowered) || email.subject.toLowerCase().includes(queryLowered))
&& isInFolder(email)
&& (label ? email.labels.includes(label) : true))
// ------------------------------------------------
// Email Meta
// ------------------------------------------------
const emailsMeta = {
inbox: db.emails.filter(email => !email.isDeleted && !email.isRead && email.folder === 'inbox').length,
draft: db.emails.filter(email => email.folder === 'draft').length,
spam: db.emails.filter(email => !email.isDeleted && !email.isRead && email.folder === 'spam').length,
}
setResponseStatus(event, 200)
return { emails: filteredData, emailsMeta }
})

View File

@@ -0,0 +1,36 @@
import { destr } from 'destr'
import { db } from '@/server/fake-db/apps/email'
export default defineEventHandler(async event => {
const { ids: emailIds, data: dataToUpdate, label } = await readBody(event)
const labelLocal = destr(label)
if (!labelLocal) {
const emailIdsLocal = destr(emailIds)
function updateMailData(email) {
Object.assign(email, dataToUpdate)
}
db.emails.forEach(email => {
if (emailIdsLocal.includes(email.id))
updateMailData(email)
})
setResponseStatus(event, 200)
return null
}
else {
function updateMailLabels(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
}
})