'use strict';
const logger = require('../logger');
const eventType = require('../eventType');
const ValidationError = require('../error/ValidationError');
const validateRequest = require('../error/validateRequest');

module.exports = function (app, config) {
    const featureDb = config.featureDb;
    const eventStore = config.eventStore;

    app.get('/archive/features', (req, res) => {
        featureDb.getArchivedFeatures().then(archivedFeatures => {
            res.json({ features: archivedFeatures });
        });
    });

    app.post('/archive/revive', (req, res) => {
        req.checkBody('name', 'Name is required').notEmpty();

        validateRequest(req)
            .then(() => eventStore.create({
                type: eventType.featureRevived,
                createdBy: req.connection.remoteAddress,
                data: req.body,
            }))
            .then(() => res.status(200).end())
            .catch(ValidationError, () => res.status(400).json(req.validationErrors()))
            .catch(err => {
                logger.error('Could not revive feature toggle', err);
                res.status(500).end();
            });
    });
};