const Service = require('./Service') class ServerService extends Service { constructor (ctx) { super(ctx) this.Server = ctx.M.Server this.P = ctx.P } async ensure (server) { let srv try { srv = await this.get(server.id) } catch (e) { } if (srv == null) { return this.create({ id: server.id, message: '', categories: {} }) } } create ({ id, message, categories }) { const srv = this.Server.build({ id, message, categories }) return srv.save() } async update (id, newData) { const srv = await this.get(id, false) return srv.update(newData) } async get (id, plain = true) { const s = await this.Server.findOne({ where: { id } }) if (!plain) { return s } return s.get({ plain: true }) } async getAllowedRoles (id) { const server = await this.get(id) return Object.values(server.categories).reduce((acc, c) => { if (c.hidden !== true) { return acc.concat(c.roles) } return acc }, []) } } module.exports = ServerService