refactor(series): extract loadPublicSeries helper

This commit is contained in:
Jennie Robinson Faber 2026-04-27 11:39:57 +01:00
parent bd4561fea7
commit 5f93d4c2e3
6 changed files with 68 additions and 56 deletions

View file

@ -1,5 +1,5 @@
import Series from "../../../../models/series.js";
import Member from "../../../../models/member.js";
import { loadPublicSeries } from "../../../../utils/loadSeries.js";
import {
calculateSeriesTicketPrice,
checkSeriesTicketAvailability,
@ -13,20 +13,7 @@ export default defineEventHandler(async (event) => {
const email = query.email;
// Fetch series
// Build query conditions based on whether seriesId looks like ObjectId or string
const isObjectId = /^[0-9a-fA-F]{24}$/.test(seriesId);
const seriesQuery = isObjectId
? { $or: [{ _id: seriesId }, { id: seriesId }, { slug: seriesId }] }
: { $or: [{ id: seriesId }, { slug: seriesId }] };
const series = await Series.findOne(seriesQuery);
if (!series) {
throw createError({
statusCode: 404,
statusMessage: "Series not found",
});
}
const series = await loadPublicSeries(event, seriesId);
// Check if tickets are enabled
if (!series.tickets?.enabled) {

View file

@ -1,6 +1,6 @@
import Series from "../../../../models/series.js";
import Event from "../../../../models/event.js";
import Member from "../../../../models/member.js";
import { loadPublicSeries } from "../../../../utils/loadSeries.js";
import {
validateSeriesTicketPurchase,
calculateSeriesTicketPrice,
@ -19,20 +19,7 @@ export default defineEventHandler(async (event) => {
const { name, email, paymentId } = body;
// Fetch series
// Build query conditions based on whether seriesId looks like ObjectId or string
const isObjectId = /^[0-9a-fA-F]{24}$/.test(seriesId);
const seriesQuery = isObjectId
? { $or: [{ _id: seriesId }, { id: seriesId }, { slug: seriesId }] }
: { $or: [{ id: seriesId }, { slug: seriesId }] };
const series = await Series.findOne(seriesQuery);
if (!series) {
throw createError({
statusCode: 404,
statusMessage: "Series not found",
});
}
const series = await loadPublicSeries(event, seriesId);
// Check membership — prefer JWT auth for accurate member pricing.
// Only members with access (active or pending_payment) get member-tier