const { Model } = require('flitter-orm') const uuid = require('uuid').v4 const LDAP = require('ldapjs') class MachineGroupModel extends Model { static get services() { return [...super.services, 'models', 'ldap_server', 'configs'] } static get schema() { return { name: String, description: String, UUID: { type: String, default: uuid }, active: { type: Boolean, default: true }, machine_ids: [String], ldap_visible: { type: Boolean, default: true }, } } async to_api() { return { id: this.id, name: this.name, description: this.description || '', UUID: this.UUID, machine_ids: this.machine_ids, ldap_visible: this.ldap_visible, } } get dn() { return LDAP.parseDN(`cn=${this.name},${this.ldap_server.machine_group_dn().format(this.configs.get('ldap:server.format'))}`) } async to_ldap() { return { cn: this.name, dn: this.dn.format(this.configs.get('ldap:server.format')), id: this.id, uuid: this.UUID, description: this.description, } } } module.exports = exports = MachineGroupModel