103 lines
1.8 KiB
JavaScript
103 lines
1.8 KiB
JavaScript
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;
|
|
}
|
|
}; |