init
This commit is contained in:
66
variants/variants.controller.js
Normal file
66
variants/variants.controller.js
Normal file
@@ -0,0 +1,66 @@
|
||||
const VariantModel = require("./variants.model");
|
||||
|
||||
exports.AddVariant = async(req, res) =>
|
||||
{
|
||||
var tid = req.body.tid;
|
||||
var cost_factor = req.body.cost_factor || 1;
|
||||
var is_default = req.body.is_default || false;
|
||||
|
||||
if(!Number.isInteger(cost_factor))
|
||||
return res.status(400).send({ error: "Invalid parameters" });
|
||||
|
||||
var data = {
|
||||
tid: tid,
|
||||
cost_factor: cost_factor,
|
||||
is_default: is_default,
|
||||
}
|
||||
|
||||
//Update or create
|
||||
var variant = await VariantModel.get(tid);
|
||||
if(variant)
|
||||
variant = await VariantModel.update(variant, data);
|
||||
else
|
||||
variant = await VariantModel.create(data);
|
||||
|
||||
if(!variant)
|
||||
return res.status(500).send({error: "Error updating variant"});
|
||||
|
||||
return res.status(200).send(data);
|
||||
};
|
||||
|
||||
exports.DeleteVariant = async(req, res) =>
|
||||
{
|
||||
VariantModel.remove(req.params.tid);
|
||||
return res.status(204).send({});
|
||||
};
|
||||
|
||||
exports.DeleteAll = async(req, res) =>
|
||||
{
|
||||
VariantModel.removeAll();
|
||||
return res.status(204).send({});
|
||||
};
|
||||
|
||||
exports.GetVariant = async(req, res) =>
|
||||
{
|
||||
var tid = req.params.tid;
|
||||
|
||||
if(!tid)
|
||||
return res.status(400).send({error: "Invalid parameters"});
|
||||
|
||||
var variant = await VariantModel.get(tid);
|
||||
if(!variant)
|
||||
return res.status(404).send({error: "Variant not found: " + tid});
|
||||
|
||||
return res.status(200).send(variant.toObj());
|
||||
};
|
||||
|
||||
exports.GetAll = async(req, res) =>
|
||||
{
|
||||
var variants = await VariantModel.getAll();
|
||||
|
||||
for(var i=0; i<variants.length; i++){
|
||||
variants[i] = variants[i].toObj();
|
||||
}
|
||||
|
||||
return res.status(200).send(variants);
|
||||
};
|
||||
103
variants/variants.model.js
Normal file
103
variants/variants.model.js
Normal file
@@ -0,0 +1,103 @@
|
||||
const mongoose = require("mongoose");
|
||||
const Schema = mongoose.Schema;
|
||||
|
||||
const variantsSchema = new Schema({
|
||||
|
||||
tid: { type: String, index: true, unique: true },
|
||||
cost_factor: {type: Number, default: 1}, //Cost multiplier
|
||||
is_default: {type: Boolean, default: false},
|
||||
});
|
||||
|
||||
variantsSchema.methods.toObj = function() {
|
||||
var elem = this.toObject();
|
||||
delete elem.__v;
|
||||
delete elem._id;
|
||||
return elem;
|
||||
};
|
||||
|
||||
const Variant = mongoose.model("Variants", variantsSchema);
|
||||
exports.Variant = Variant;
|
||||
|
||||
exports.create = async(data) => {
|
||||
|
||||
try{
|
||||
var variant = new Variant(data);
|
||||
return await variant.save();
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.get = async(variant_tid) => {
|
||||
|
||||
try{
|
||||
var variant = await Variant.findOne({tid: variant_tid});
|
||||
return variant;
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.getDefault = async() => {
|
||||
|
||||
try{
|
||||
var variant = await Variant.findOne({is_default: true});
|
||||
return variant;
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.getAll = async() => {
|
||||
|
||||
try{
|
||||
var variants = await Variant.find({});
|
||||
return variants;
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
exports.update = async(variant, data) => {
|
||||
|
||||
try{
|
||||
if(!variant) return null;
|
||||
|
||||
for (let i in data) {
|
||||
variant[i] = data[i];
|
||||
variant.markModified(i);
|
||||
}
|
||||
|
||||
var updated = await variant.save();
|
||||
return updated;
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.remove = async(variant_tid) => {
|
||||
|
||||
try{
|
||||
var result = await Variant.deleteOne({tid: variant_tid});
|
||||
return result && result.deletedCount > 0;
|
||||
}
|
||||
catch{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
exports.removeAll = async() => {
|
||||
try{
|
||||
var result = await Variant.deleteMany({});
|
||||
return result && result.deletedCount > 0;
|
||||
}
|
||||
catch{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
36
variants/variants.routes.js
Normal file
36
variants/variants.routes.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const config = require("../config");
|
||||
const VariantsController = require("./variants.controller");
|
||||
const AuthTool = require("../authorization/auth.tool");
|
||||
|
||||
const ADMIN = config.permissions.ADMIN; //Highest permision, can read and write all users
|
||||
const SERVER = config.permissions.SERVER; //Higher permission, can read all users
|
||||
const USER = config.permissions.USER; //Lowest permision, can only do things on same user
|
||||
|
||||
exports.route = (app) => {
|
||||
|
||||
app.get("/variants", [
|
||||
VariantsController.GetAll
|
||||
]);
|
||||
|
||||
app.get("/variants/:tid", [
|
||||
VariantsController.GetVariant
|
||||
]);
|
||||
|
||||
app.post("/variants/add", [
|
||||
AuthTool.isValidJWT,
|
||||
AuthTool.isPermissionLevel(ADMIN),
|
||||
VariantsController.AddVariant
|
||||
]);
|
||||
|
||||
app.delete("/variants/:tid", [
|
||||
AuthTool.isValidJWT,
|
||||
AuthTool.isPermissionLevel(ADMIN),
|
||||
VariantsController.DeleteVariant
|
||||
]);
|
||||
|
||||
app.delete("/variants", [
|
||||
AuthTool.isValidJWT,
|
||||
AuthTool.isPermissionLevel(ADMIN),
|
||||
VariantsController.DeleteAll
|
||||
]);
|
||||
};
|
||||
Reference in New Issue
Block a user