import express from 'express' import { checkSchema } from 'express-validator' import { createBuilding, getApartments, getBuilding, getBuildings, getSimulation, getUsers, updateBuilding, updateBuildingDataCharacteristics, updateBuildingDataBasement, updateBuildingDataFacade, updateBuildingDataHeating, updateBuildingDataRoof } from '../../controllers/buildings.js' import asyncHandler from '../../middleware/asyncHandler.js' import permissionHandler from '../../middleware/permissionHandler.js' import { basementSchema, characteristicsSchema, createBuildingSchema, facadeSchema, heatingSchema, roofSchema, simulationSchema } from '../../schemas/buildings.js' import { idSchema } from '../../schemas/index.js' const router = express.Router() router.get('/', permissionHandler, asyncHandler(getBuildings)) router.get('/:id', checkSchema(idSchema), asyncHandler(getBuilding)) router.get('/:id/apartments', checkSchema(idSchema), asyncHandler(getApartments)) router.get('/:id/simulations/run', checkSchema(simulationSchema), asyncHandler(getSimulation)) router.get('/:id/users', checkSchema(idSchema), asyncHandler(getUsers)) router.post('/', permissionHandler, checkSchema(createBuildingSchema), asyncHandler(createBuilding)) router.put('/:id', permissionHandler, asyncHandler(updateBuilding)) router.put('/:id/basement', permissionHandler, checkSchema(basementSchema), asyncHandler(updateBuildingDataBasement)) router.put('/:id/characteristics', permissionHandler, checkSchema(characteristicsSchema), asyncHandler(updateBuildingDataCharacteristics)) router.put('/:id/facade', permissionHandler, checkSchema(facadeSchema), asyncHandler(updateBuildingDataFacade)) router.put('/:id/heating', permissionHandler, checkSchema(heatingSchema), asyncHandler(updateBuildingDataHeating)) router.put('/:id/roof', permissionHandler, checkSchema(roofSchema), asyncHandler(updateBuildingDataRoof)) export default router