init
This commit is contained in:
146
market/market.model.js
Normal file
146
market/market.model.js
Normal file
@@ -0,0 +1,146 @@
|
||||
const mongoose = require('mongoose');
|
||||
const Schema = mongoose.Schema;
|
||||
|
||||
const marketSchema = new Schema({
|
||||
|
||||
seller: {type: String, index: true},
|
||||
card: {type: String, index: true},
|
||||
variant: {type: String},
|
||||
quantity: {type: Number},
|
||||
price: {type: Number},
|
||||
time: {type: Date},
|
||||
|
||||
});
|
||||
|
||||
marketSchema.methods.toObj = function() {
|
||||
var offer = this.toObject();
|
||||
delete offer.__v;
|
||||
delete offer._id;
|
||||
return offer;
|
||||
};
|
||||
|
||||
const Market = mongoose.model('Markets', marketSchema);
|
||||
|
||||
// Market DATA MODELS ------------------------------------------------
|
||||
|
||||
exports.getOffer = async(user, card_tid, variant_id) => {
|
||||
|
||||
try{
|
||||
var regex = new RegExp(["^", user, "$"].join(""), "i");
|
||||
var offer = await Market.findOne({seller: regex, card: card_tid, variant: variant_id});
|
||||
return offer;
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.getBySeller = async(user) => {
|
||||
|
||||
try{
|
||||
var regex = new RegExp(["^", user, "$"].join(""), "i");
|
||||
var offers = await Market.find({seller: regex});
|
||||
offers = offers || [];
|
||||
return offers;
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
exports.getByCard = async(card_tid, variant_id) => {
|
||||
|
||||
try{
|
||||
var offers = await Market.find({card: card_tid, variant: variant_id});
|
||||
offers = offers || [];
|
||||
return offers;
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
exports.getAll = async() => {
|
||||
|
||||
try{
|
||||
var offers = await Market.find()
|
||||
offers = offers || [];
|
||||
return offers;
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
exports.getAllLimit = async(perPage, page) => {
|
||||
|
||||
try{
|
||||
var offers = await Market.find().limit(perPage).skip(perPage * page)
|
||||
offers = offers || [];
|
||||
return offers;
|
||||
}
|
||||
catch{
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
exports.add = async(user, card, variant, data) => {
|
||||
|
||||
try{
|
||||
var offer = await Market.findOne({seller: user, card: card, variant: variant});
|
||||
|
||||
if(!offer)
|
||||
{
|
||||
offer = new Market(data);
|
||||
offer.date = Date.now();
|
||||
return await offer.save();
|
||||
}
|
||||
else
|
||||
{
|
||||
offer.quantity += data.quantity;
|
||||
offer.price = data.price;
|
||||
offer.date = Date.now();
|
||||
|
||||
var updated = await offer.save();
|
||||
return updated;
|
||||
}
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
exports.reduce = async(user, card, variant, quantity) => {
|
||||
|
||||
try{
|
||||
var offer = await Market.findOne({seller: user, card: card, variant: variant});
|
||||
if(offer)
|
||||
{
|
||||
offer.quantity -= quantity;
|
||||
if(offer.quantity > 0)
|
||||
{
|
||||
var updated = await offer.save();
|
||||
return updated;
|
||||
}
|
||||
else{
|
||||
var result = await Market.deleteOne({seller: user, card: card});
|
||||
return result && result.deletedCount > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
exports.remove = async(user, card, variant) => {
|
||||
|
||||
try{
|
||||
var result = await Market.deleteOne({seller: user, card: card, variant: variant});
|
||||
return result && result.deletedCount > 0;
|
||||
}
|
||||
catch{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user