const Middleware = require('libflitter/middleware/Middleware')

/*
 * DatabaseRoute Middleware
 * -------------------------------------------------------------
 * Put some description here!
 */
class DatabaseRoute extends Middleware {
    static get services() {
        return [...super.services, 'models']
    }

    async test(req, res, next, args = {}){
        const Database = this.models.get('api:db:Database')

        const id = req.params.database_id ? req.params.database_id : (req.query.database_id ? req.query.database_id : false)
        if ( !id ) return res.status(400).message('Missing required: database_id').api()

        const db = await Database.findOne({UUID: id})
        if ( !db ) return res.status(404).message('Unable to find database with that ID.').api()
        if ( !(await db.is_accessible_by(req.user)) ) return req.security.deny()

        if ( !req.form ) req.form = {}
        req.form.database = db

        next()
    }
}

module.exports = exports = DatabaseRoute
