import * as express from 'express' import { UserRight } from '../../../../shared/models/users' import { asyncMiddleware, authenticate, ensureUserHasRight } from '../../../middlewares' import { updateServerRedundancyValidator } from '../../../middlewares/validators/redundancy' import { ServerModel } from '../../../models/server/server' import { removeRedundancyOf } from '../../../lib/redundancy' import { logger } from '../../../helpers/logger' const serverRedundancyRouter = express.Router() serverRedundancyRouter.put('/redundancy/:host', authenticate, ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW), asyncMiddleware(updateServerRedundancyValidator), asyncMiddleware(updateRedundancy) ) // --------------------------------------------------------------------------- export { serverRedundancyRouter } // --------------------------------------------------------------------------- async function updateRedundancy (req: express.Request, res: express.Response, next: express.NextFunction) { const server = res.locals.server as ServerModel server.redundancyAllowed = req.body.redundancyAllowed await server.save() // Async, could be long removeRedundancyOf(server.id) .catch(err => logger.error('Cannot remove redundancy of %s.', server.host, err)) return res.sendStatus(204) }