Files
freeplanet_serverside/src/server/models/cart.js

68 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-12-21 02:16:42 +01:00
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const CartSchema = new Schema({
userId: { type: Schema.Types.ObjectId, ref: 'User' },
totalQty: { type: Number, default: 0 },
totalPrice: { type: Number, default: 0 },
items: [{
item: { type: Schema.Types.ObjectId, ref: 'Product' },
quantity: { type: Number, default: 1 },
price: { type: Number, default: 0 }
}]
});
module.exports.getCartByUserId = function (uid, callback) {
let query = { userId: uid }
Cart.find(query, callback)
}
module.exports.getCartById = function (id, callback) {
Cart.findById(id, callback)
}
module.exports.updateCartByUserId = function (userId, newCart, callback) {
let query = { userId: userId }
Cart.find(query, function (err, c) {
if (err) throw err
//exist cart in databse
if (c.length > 0) {
Cart.findOneAndUpdate(
{ userId: userId },
{
$set: {
items: newCart.items,
totalQty: newCart.totalQty,
totalPrice: newCart.totalPrice,
userId: userId
}
},
{ new: true },
callback
)
} else {
//no cart in database
newCart.save(callback)
}
})
}
module.exports.updateCartByCartId = function (cartId, newCart, callback) {
Cart.findById(
{ _id: cartId },
{
$set: newCart
},
callback
)
}
module.exports.createCart = function (newCart, callback) {
newCart.save(callback)
}
module.exports = mongoose.model('Cart', CartSchema);