All files / src/models Users.js

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

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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65      78x                     78x             78x                                                                                   78x  
import { Schema, model } from "mongoose";
import { ArrayOfObjectIds, Email, Password, PersonName, RequiredNumber, RequiredString } from "../utilities/schemaTypesOptions.js";
 
export const LocationSchema = new Schema({
    theName: PersonName(),
    phone: RequiredString(),
    country: RequiredString(),
    city: RequiredString(),
    street: RequiredString(),
    moreDetails: { type: String, maxLength: 400 },
    id: RequiredString(),
    _id: false
});
 
export const PaymentMethodSchema = new Schema({
    theName: PersonName(),
    number: RequiredNumber(),
    expired: RequiredString(),
    _id: false
});
 
const UserSchema = new Schema(
    {
        userName: PersonName(),
        userEmail: Email(),
        userPassword: Password(),
        avatar: String,
        userShoppingCart: {
            type: [String],
            default: []
        },
        userAddress: {
            selectedLocation: LocationSchema,
            locationsList: {
                type: [LocationSchema],
                default: []
            },
        },
        userPaymentMethodes: {
            cardsList: {
                type: [PaymentMethodSchema],
                default: []
            },
            choosedMethod: PaymentMethodSchema,
        },
        userFavorites: ArrayOfObjectIds(),
        userOrders: ArrayOfObjectIds(),
        hisEmailVerified: {
            type: Boolean,
            default: false
        },
        lastPasswordChange: {
            type: Date,
            default: null
        },
        signingMethod: {
            type: String,
            default: "Email & Password"
        }
    },
    { timestamps: true, versionKey: false }
);
 
const UsersModel = model("users", UserSchema);
export default UsersModel;