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