57 lines
2.8 KiB
JavaScript

const express = require('express');
const router = express.Router();
const resourceController = require('../controllers/resourceController');
const scraperController = require('../controllers/scraperController');
const geocodingController = require('../controllers/geocodingController');
const routingController = require('../controllers/routingController');
const updateRequestController = require('../controllers/updateRequestController');
const adminAuth = require('../middleware/adminAuth');
// Resource endpoints
router.get('/resources', resourceController.getResources);
router.get('/resources/search', resourceController.searchResources);
router.get('/resources/nearby', resourceController.getNearbyResources);
router.get('/resources/map', resourceController.getAllResourcesForMap);
router.get('/resources/:id', resourceController.getResourceById);
// Filter options
router.get('/cities', resourceController.getCities);
router.get('/types', resourceController.getTypes);
// Stats
router.get('/stats', resourceController.getStats);
// Admin/scraper endpoints
router.post('/scrape', scraperController.triggerScrape);
router.get('/scrape/status', scraperController.getScrapeStatus);
router.get('/scrape/logs', scraperController.getScrapeLogs);
// Geocoding endpoints
router.get('/geocode', geocodingController.geocodeAddress);
router.get('/geocode/reverse', geocodingController.reverseGeocode);
router.post('/admin/resources/:id/regeocode', adminAuth, geocodingController.regeocodeResource);
// Routing/Directions endpoints
router.get('/directions', routingController.getDirections);
// Update request endpoints (public)
router.post('/resources/:id/update-request', updateRequestController.submitUpdateRequest);
// Listing submission endpoint (public)
router.post('/listings/submit', updateRequestController.submitListingSubmission);
// Admin endpoints (protected)
router.post('/admin/auth', updateRequestController.validateAuth);
router.get('/admin/update-requests', adminAuth, updateRequestController.getUpdateRequests);
router.get('/admin/update-requests/counts', adminAuth, updateRequestController.getRequestCounts);
router.post('/admin/update-requests/:id/approve', adminAuth, updateRequestController.approveRequest);
router.post('/admin/update-requests/:id/reject', adminAuth, updateRequestController.rejectRequest);
// Listing submissions admin endpoints (protected)
router.get('/admin/listing-submissions', adminAuth, updateRequestController.getListingSubmissions);
router.get('/admin/listing-submissions/counts', adminAuth, updateRequestController.getListingSubmissionCounts);
router.post('/admin/listing-submissions/:id/approve', adminAuth, updateRequestController.approveListingSubmission);
router.post('/admin/listing-submissions/:id/reject', adminAuth, updateRequestController.rejectListingSubmission);
module.exports = router;