radix_polls
Version:
Mapi for acquiring data through polls or just questions
302 lines (281 loc) • 6.45 kB
JavaScript
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;
}