import { FastifyInstance } from 'fastify'; import { authenticate, authorizeProjectMember, authorizePlannerPlus } from '../middleware/auth'; import { getLayers, createLayer, updateLayer, deleteLayer, reorderLayers } from '../layerController'; import { validateLayerCreation, validateLayerUpdate, validateLayerReorder } from '../layerValidator'; export default async function layersRoutes(fastify: FastifyInstance) { // GET /projects/:projectId/layers - List layers for project fastify.get('/', { preHandler: [authenticate, authorizeProjectMember] }, getLayers); // POST /projects/:projectId/layers/ - Create layer (Planner+) fastify.post('/', { preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] }, createLayer); // PUT /projects/:projectId/layers/:layerId - Update layer (Planner+) fastify.put('/:layerId', { preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] }, updateLayer); // DELETE /projects/:projectId/layers/:layerId - Delete layer (Planner+) fastify.delete('/:layerId', { preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] }, deleteLayer); // PUT /projects/:projectId/layers/reorder - Reorder layers (Planner+) fastify.put('/reorder', { preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] }, reorderLayers); }