UNPKG

radix_polls

Version:

Mapi for acquiring data through polls or just questions

302 lines (281 loc) 6.45 kB
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const Hash = require('password-hash'); var radix; var instance; module.exports = { __NAME: "polls", __VERSION: "1.0.0-beta.0", __AUTHOR: "Cortney Knorr", __RADIXVERSIONS: [ "2.0.0@beta", "2.0.0-beta.2", "2.0.0-rc.0", "2.0.0-rc.1", "2.0.0" ], load: function load(radixArg, settingsArg){ radix = radixArg; module.exports.model = new generateModel(); } } function generateQuestionModel(){ let structure = { content: {type: String}, type: {type: String}, group: {type: String}, answers: [{type: String}], required: {type: Boolean} }; var schema = new Schema(structure); schema.methods = { debug: function debug(){ console.log(this); } }; let model = mongoose.model("radix_polls_questions", schema); model.fcs = { create: function* create(leanInstance){ return yield (new model(leanInstance)).save(); }, byId: function(id) { return { get: function* get(){ return yield model.findById(id); }, delete: function* (){ return yield model.findByIdAndRemove(id); }, update: function* update(leanInstance){ return yield model.findByIdAndUpdate(id, leanInstance, {new: true}); } } }, byGroup: function(group){ return { get: function* get(){ return yield model.find({group}); }, } }, get: function* get(page, length){ return yield model.find().skip(page*length).limit(length).lean(); } }; let conv = radix.dapis.wizards.standards.ehgf13Arg; model.ehgs = { create(leanInstance){ return function*(request, response, next){ return response.send(yield* model.fcs.create( conv(leanInstance, request, false) )); } }, get(page, length){ return function*(request, response, next){ return response.send(yield* model.fcs.get( conv(page, request, false), conv(length, request, false) )); } }, byGroup(group){ return { get(){ return function*(request, response, next){ return response.send(yield* model.fcs.byGroup( conv(group, request, false) ).get()); } } } }, byId(id){ return { get(){ return function*(request, response, next){ return response.send(yield* model.fcs.byId( conv(id, request, false) ).get()); } }, delete(){ return function*(request, response, next){ return response.send(yield* model.fcs.byId( conv(id, request, false) ).delete()); } }, update(leanInstance){ return function*(request, response, next){ return response.send(yield* model.fcs.byId( conv(id, request, false) ).update( conv(leanInstance, request, false) )); } } } } }; return model; } function generateDataModel(){ let structure = { user: {type: Schema.ObjectId, ref: "radix_users"}, question: {type: String}, answer: {type: String}, type: {type: String}, group: {type: String}, answers: [{type: String}], required: {type: Boolean} }; var schema = new Schema(structure); schema.methods = { debug: function debug(){ console.log(this); } }; let model = mongoose.model("radix_polls_questions", schema); model.fcs = { create: function* create(leanInstance){ return yield (new model(leanInstance)).save(); }, byId: function(id) { return { get: function* get(){ return yield model.findById(id); }, delete: function* (){ return yield model.findByIdAndRemove(id); }, update: function* update(leanInstance){ return yield model.findByIdAndUpdate(id, leanInstance, {new: true}); } } }, byGroup: function(group){ return { get: function* get(){ return yield model.find({group}); }, } }, byUser: function(user){ return { get: function* get(){ return yield model.find({user}); }, delete: function* delete(){ return yield model.remove({user}); }, } }, byQuestion: function(question){ return { get: function* get(){ return yield model.find({question}); }, delete: function* delete(){ return yield model.remove({question}); }, } }, get: function* get(page, length){ return yield model.find().skip(page*length).limit(length).lean(); } }; let conv = radix.dapis.wizards.standards.ehgf13Arg; model.ehgs = { create(leanInstance){ return function*(request, response, next){ return response.send(yield* model.fcs.create( conv(leanInstance, request, false) )); } }, get(page, length){ return function*(request, response, next){ return response.send(yield* model.fcs.get( conv(page, request, false), conv(length, request, false) )); } }, byUser(user){ return { get(){ return function*(request, response, next){ return response.send(yield* model.fcs.byUser( conv(user, request, false) ).get()); } }, delete(){ return function*(request, response, next){ return response.send(yield* model.fcs.byUser( conv(user, request, false) ).delete()); } } } }, byQuestion(question){ return { get(){ return function*(request, response, next){ return response.send(yield* model.fcs.byQuestion( conv(question, request, false) ).get()); } }, delete(){ return function*(request, response, next){ return response.send(yield* model.fcs.byQuestion( conv(question, request, false) ).delete()); } } } }, byGroup(group){ return { get(){ return function*(request, response, next){ return response.send(yield* model.fcs.byGroup( conv(group, request, false) ).get()); } } } }, byId(id){ return { get(){ return function*(request, response, next){ return response.send(yield* model.fcs.byId( conv(id, request, false) ).get()); } }, delete(){ return function*(request, response, next){ return response.send(yield* model.fcs.byId( conv(id, request, false) ).delete()); } }, update(leanInstance){ return function*(request, response, next){ return response.send(yield* model.fcs.byId( conv(id, request, false) ).update( conv(leanInstance, request, false) )); } } } } }; return model; }