ghostguild-org/server/api/members/create.post.js

45 lines
No EOL
1.3 KiB
JavaScript

// server/api/members/create.post.js
import Member from '../../models/member.js'
import { connectDB } from '../../utils/mongoose.js'
// Simple payment check function to avoid import issues
const requiresPayment = (contributionValue) => contributionValue !== '0'
export default defineEventHandler(async (event) => {
// Ensure database is connected
await connectDB()
const body = await readBody(event)
try {
// Check if member already exists
const existingMember = await Member.findOne({ email: body.email })
if (existingMember) {
throw createError({
statusCode: 409,
statusMessage: 'A member with this email already exists'
})
}
const member = new Member(body)
await member.save()
// TODO: Process payment with Helcim if not free tier
if (requiresPayment(body.contributionTier)) {
// Payment processing will be added here
console.log('Payment processing needed for tier:', body.contributionTier)
}
// TODO: Send welcome email
console.log('Welcome email should be sent to:', body.email)
return { success: true, member }
} catch (error) {
if (error.statusCode) {
throw error
}
throw createError({
statusCode: 400,
statusMessage: error.message
})
}
})