/** * Publications Routes * API endpoints for publication targets */ const express = require('express'); const router = express.Router(); const publicationsController = require('../controllers/publications.controller'); const publicationTargets = require('../config/publication-targets.config'); const { authenticateToken, requireAdmin } = require('../middleware/auth.middleware'); /** * GET /api/publications * Get all publications with optional filtering * Query params: type, tier, culture, minRank, maxRank, language * Public endpoint */ router.get('/', publicationsController.getPublications); /** * GET /api/publications/summary * Get publication summary statistics * Public endpoint */ router.get('/summary', publicationsController.getPublicationsSummary); /** * GET /api/publications/targets * Returns all publication targets with editorial guidelines * Used by Editorial Guidelines Manager admin page */ router.get('/targets', (req, res) => { try { // Convert to array and enrich with metadata const targets = Object.entries(publicationTargets.PUBLICATION_TARGETS).map(([key, target]) => ({ ...target, key })); res.json({ success: true, total: targets.length, targets }); } catch (error) { console.error('Error fetching publication targets:', error); res.status(500).json({ success: false, error: 'Failed to fetch publication targets' }); } }); /** * GET /api/publications/:id * Get specific publication by ID * Public endpoint * NOTE: This must come LAST as it's a parameterized route */ router.get('/:id', publicationsController.getPublicationById); module.exports = router;