Files
tcg-server/packs/packs.model.js
yaoyanwei 4b2bb35c20 init
2025-08-04 16:25:38 +08:00

96 lines
1.8 KiB
JavaScript

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const packsSchema = new Schema({
tid: { type: String, index: true, unique: true },
cards: {type: Number, default: 1}, //Number of cards per pack
cost: {type: Number, default: 0}, //Cost in coins
random: {type: Boolean, default: true},
rarities: [{type: Object}], //Probabilities to get each rarities
rarities_1st: [{type: Object}], //Probabilities but for the first card only
variants: [{type: Object}], //Probabilities of variants
});
packsSchema.methods.toObj = function() {
var elem = this.toObject();
delete elem.__v;
delete elem._id;
return elem;
};
const Pack = mongoose.model("Packs", packsSchema);
exports.Pack = Pack;
exports.create = async(data) => {
try{
var pack = new Pack(data);
return await pack.save();
}
catch{
return null;
}
};
exports.get = async(set_tid) => {
try{
var pack = await Pack.findOne({tid: set_tid});
return pack;
}
catch{
return null;
}
};
exports.getAll = async() => {
try{
var packs = await Pack.find({});
return packs;
}
catch{
return [];
}
};
exports.update = async(pack, data) => {
try{
if(!pack) return null;
for (let i in data) {
pack[i] = data[i];
pack.markModified(i);
}
var updated = await pack.save();
return updated;
}
catch{
return null;
}
};
exports.remove = async(pack_tid) => {
try{
var result = await Pack.deleteOne({tid: pack_tid});
return result && result.deletedCount > 0;
}
catch{
return false;
}
};
exports.removeAll = async() => {
try{
var result = await Pack.deleteMany({});
return result && result.deletedCount > 0;
}
catch{
return false;
}
};