All files / src/models Orders.js

100% Statements 2/2
100% Branches 0/0
100% Functions 0/0
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47          78x                                                                             78x    
import { Schema, model } from "mongoose";
import { LocationSchema, PaymentMethodSchema } from "./Users.js";
import { RequiredNumber, ObjectId, RequiredObjectId, ANumber } from "../utilities/schemaTypesOptions.js";
import { getDateAfterN } from "../utilities/dateMaker.js";
 
const OrderSchema = new Schema(
    {
        userId: RequiredObjectId(),
        userData: {
            _id: ObjectId,
            userName: String,
            userEmail: String,
            avatar: String
        },
        location: { type: LocationSchema },
        totalPrice: RequiredNumber(),
        products: {
            type: [String],
            required: true
        },
        paymentMethod: {
            type: Schema.Types.Mixed,
            enum: ["Cash", PaymentMethodSchema]
        },
        state: {
            type: String,
            enum: ["Completed", "Pending", "Canceled"],
            default: "Completed"
        },
        expectedDeliveryDate: {
            type: String,
            default: getDateAfterN(7),
        },
        deliveryPrice: ANumber(),
        discountCobone: {
            type: {
                name: String,
                value: Number
            }
        }
    },
    { timestamps: true, versionKey: false }
)
 
const OrdersModel = model("orders", OrderSchema);
 
export default OrdersModel;