"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = require("express"); const zod_1 = require("zod"); const Sponsor_1 = require("../models/Sponsor"); const auth_1 = require("../middleware/auth"); const upload_1 = require("../middleware/upload"); const router = (0, express_1.Router)(); const sponsorSchema = zod_1.z.object({ name: zod_1.z.string().min(1), description: zod_1.z.string().min(1), websiteUrl: zod_1.z.string().url().optional().or(zod_1.z.literal('')), facebookUrl: zod_1.z.string().url().optional().or(zod_1.z.literal('')), instagramUrl: zod_1.z.string().url().optional().or(zod_1.z.literal('')), order: zod_1.z.coerce.number().optional(), logoPath: zod_1.z.string().optional(), }); router.get('/', async (_req, res) => { const sponsors = await Sponsor_1.Sponsor.find().sort({ order: 1, createdAt: 1 }); res.json(sponsors); }); router.post('/', auth_1.requireAuth, upload_1.uploadLogo.single('logo'), async (req, res) => { const data = sponsorSchema.parse(req.body); const logoPath = req.file ? `/uploads/sponsors/${req.file.filename}` : (data.logoPath ?? ''); const sponsor = await Sponsor_1.Sponsor.create({ ...data, logoPath }); res.status(201).json(sponsor); }); router.put('/:id', auth_1.requireAuth, upload_1.uploadLogo.single('logo'), async (req, res) => { const data = sponsorSchema.partial().parse(req.body); const update = { ...data }; if (req.file) update.logoPath = `/uploads/sponsors/${req.file.filename}`; const sponsor = await Sponsor_1.Sponsor.findByIdAndUpdate(req.params.id, update, { new: true }); if (!sponsor) { res.status(404).json({ error: 'Not found' }); return; } res.json(sponsor); }); router.delete('/:id', auth_1.requireAuth, async (req, res) => { await Sponsor_1.Sponsor.findByIdAndDelete(req.params.id); res.status(204).send(); }); exports.default = router; //# sourceMappingURL=sponsors.js.map