list(query){ query = query || { }; let records = this._table.find(query); // convert loki objects to database-agnostic objects return Store._convertAll(records); }
srv.on('DELETE', 'Media', (req, next) => { const id = req.data.id mediaDB .chain() .find({ $loki: id }) .remove() return next() //> delegate to next/default handlers })
// Send data to a specified client function unicast(data, id){ var res = clients.findOne({id}); send_var(data, res.port, res.address); }
// Send data to every channel function broadcast(data, id){ var res = clients.where((o)=>o.id != id); for(var i=0;i<res.length;i++){ send_var(data, res[i].port, res[i].address); } }
update(object){ let existingRecord = this._table.get(parseInt(object.id)); if (!existingRecord) return; for (let property in object){ // id is an artificial property added on returned objects only, so do not persist it if (property === 'id') continue; existingRecord[property] = object[property]; } this._table.update(existingRecord); }
srv.on('READ', 'Media', (req, next) => { const url = req._.req.path if (url.includes('content')) { const id = req.data.id const mediaObj = mediaDB.get(id) if (!mediaObj) { req.reject(404, 'Media not found for the ID') return } const decodedMedia = new Buffer( mediaObj.media.split(';base64,').pop(), 'base64' ) return _formatResult(decodedMedia) } else return next() //> delegate to next/default handlers })
// Send data to a specified channel function multicast(data, id, channel){ var res = clients.find({channel, id: {'$ne' : id}}); for(var i=0;i<res.length;i++){ send_var(data, res[i].port, res[i].address); } }
list() { return tidyResults(this.jokes.find()); }
srv.before('CREATE', 'Media', req => { const obj = mediaDB.insert({ media: '' }) req.data.id = obj.$loki })
add(object){ let record = this._table.insert(object); return Store._convert(record); }
getById(id) { return tidyResult( this.jokes.findOne({'id': { '$eq' : id }}) ); }
put(joke) { return tidyResult( this.jokes.insert(joke) ); }