ghostguild-org/server/api/admin/series/[id].put.js

62 lines
No EOL
1.7 KiB
JavaScript

import Series from '../../../models/series.js'
import Event from '../../../models/event.js'
import { connectDB } from '../../../utils/mongoose.js'
export default defineEventHandler(async (event) => {
try {
await connectDB()
const id = getRouterParam(event, 'id')
const body = await readBody(event)
if (!id) {
throw createError({
statusCode: 400,
statusMessage: 'Series ID is required'
})
}
// Find and update the series
const series = await Series.findOne({ id: id })
if (!series) {
throw createError({
statusCode: 404,
statusMessage: 'Series not found'
})
}
// Update series fields
if (body.title !== undefined) series.title = body.title
if (body.description !== undefined) series.description = body.description
if (body.type !== undefined) series.type = body.type
if (body.totalEvents !== undefined) series.totalEvents = body.totalEvents
if (body.isActive !== undefined) series.isActive = body.isActive
await series.save()
// Also update all related events with the new series information
await Event.updateMany(
{ 'series.id': id, 'series.isSeriesEvent': true },
{
$set: {
'series.title': series.title,
'series.description': series.description,
'series.type': series.type,
'series.totalEvents': series.totalEvents
}
}
)
return {
success: true,
data: series
}
} catch (error) {
console.error('Error updating series:', error)
throw createError({
statusCode: 500,
statusMessage: error.message || 'Failed to update series'
})
}
})