42 lines
No EOL
1.6 KiB
JavaScript
42 lines
No EOL
1.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const express_1 = require("express");
|
|
const zod_1 = require("zod");
|
|
const Member_1 = require("../models/Member");
|
|
const auth_1 = require("../middleware/auth");
|
|
const router = (0, express_1.Router)();
|
|
const memberSchema = zod_1.z.object({
|
|
firstName: zod_1.z.string().min(1),
|
|
lastName: zod_1.z.string().min(1),
|
|
email: zod_1.z.string().email(),
|
|
phone: zod_1.z.string().optional(),
|
|
address: zod_1.z.string().optional(),
|
|
membershipType: zod_1.z.enum(['regular', 'honorary', 'board']).optional(),
|
|
status: zod_1.z.enum(['active', 'inactive']).optional(),
|
|
joinDate: zod_1.z.string().optional(),
|
|
notes: zod_1.z.string().optional(),
|
|
});
|
|
router.get('/', auth_1.requireAuth, async (_req, res) => {
|
|
const members = await Member_1.Member.find().sort({ lastName: 1, firstName: 1 });
|
|
res.json(members);
|
|
});
|
|
router.post('/', auth_1.requireAuth, async (req, res) => {
|
|
const data = memberSchema.parse(req.body);
|
|
const member = await Member_1.Member.create(data);
|
|
res.status(201).json(member);
|
|
});
|
|
router.put('/:id', auth_1.requireAuth, async (req, res) => {
|
|
const data = memberSchema.partial().parse(req.body);
|
|
const member = await Member_1.Member.findByIdAndUpdate(req.params.id, data, { new: true });
|
|
if (!member) {
|
|
res.status(404).json({ error: 'Not found' });
|
|
return;
|
|
}
|
|
res.json(member);
|
|
});
|
|
router.delete('/:id', auth_1.requireAuth, async (req, res) => {
|
|
await Member_1.Member.findByIdAndDelete(req.params.id);
|
|
res.status(204).send();
|
|
});
|
|
exports.default = router;
|
|
//# sourceMappingURL=members.js.map
|