diff --git a/sk1/src/models/Cart.js b/sk1/src/models/Cart.js new file mode 100644 index 0000000..1df16aa --- /dev/null +++ b/sk1/src/models/Cart.js @@ -0,0 +1,17 @@ +const mongoose = require('mongoose'); + +const CartItemSchema = new mongoose.Schema({ + productId: { type: String, required: true }, + name: { type: String, required: true }, + price: { type: Number, required: true }, + img: { type: String, required: true }, + quantity: { type: Number, default: 1 } +}); + +const CartSchema = new mongoose.Schema({ + userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, + items: [CartItemSchema], + updatedAt: { type: Date, default: Date.now } +}); + +module.exports = mongoose.model('Cart', CartSchema); \ No newline at end of file diff --git a/sk1/src/models/User.js b/sk1/src/models/User.js new file mode 100644 index 0000000..50a40ba --- /dev/null +++ b/sk1/src/models/User.js @@ -0,0 +1,19 @@ +const mongoose = require('mongoose'); +const bcrypt = require('bcryptjs'); + +const UserSchema = new mongoose.Schema({ + firstName: { type: String, required: true }, + lastName: { type: String, required: true }, + email: { type: String, required: true, unique: true }, + password: { type: String, required: true }, + createdAt: { type: Date, default: Date.now } +}); + +UserSchema.pre('save', async function(next) { + if (this.isModified('password')) { + this.password = await bcrypt.hash(this.password, 10); + } + next(); +}); + +module.exports = mongoose.model('User', UserSchema); \ No newline at end of file