const {query} = require("../client") class Channel { constructor(name, logged, hub, eventName, locationName) { this.name = name this.logged = logged this.hub = hub this.eventName = eventName this.locationName = locationName } static fromData(data) { return new Channel(data.name, data.logged, data.hub, data.eventName, data.locationName) } } class ChannelAPI { /** * Call `channels(filter)` query * * @param {{logged:boolean, eventName:string, locationName:string}} filter * @returns {Promise} */ list(filter = {}) { return query(` query ListChannel($filter: ChannelsFilter) { channels(filter: $filter) { name logged hub eventName locationName } } `, {filter}).then(({channels}) => { return channels.map(d => Channel.fromData(d)) }) } /** * Call `channels(filter)` query * * @param {{name:string, logged:boolean, eventName:string, locationName:string}} filter * @returns {Promise} */ add(input = {}) { return query(` mutation AddChannel($input: ChannelAddInput!) { addChannel(input: $input) { name hub logged eventName locationName } } `, {input}, {permissions: ["channel.add"]}).then(({addChannel}) => { return Channel.fromData(addChannel) }) } /** * Call `channels(filter)` query * * @param {{name:string, logged:boolean, eventName:string, locationName:string}} filter * @returns {Promise<{name:string, logged:boolean, eventName:string, locationName:string}>} */ edit(input = {}) { return query(` mutation EditChannel($input: ChannelEditInput!) { editChannel(input: $input) { name logged eventName locationName } } `, {input}, {permissions: ["channel.edit"]}).then(({editChannel}) => { return editChannel }) } } module.exports = { Channel, channelApi: new ChannelAPI }