UNPKG

pl4y-data-library

Version:

This library contains the dtos, enums, schemas, and other data objects needed in the pl4y ecosystem.

47 lines (34 loc) 1.27 kB
import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose"; import { Document, Types } from "mongoose"; import { CartStatusEnum } from "../enums/cart-status.enum"; import { CurrencyCodeEnum } from "../enums/currency-code.enum"; import { Product } from "./product.schema"; // Defines the interface for your document export type CartDocument = Cart & Document; export class CartItem { @Prop({ type: [Types.ObjectId], ref: "Product" }) product: Product; @Prop({ required: true, default: 1 }) quantity: number; } @Schema() export class Cart { @Prop({ default: false }) isCheckoutable: boolean; @Prop({ required: true }) referenceId: string; @Prop() items: CartItem[]; @Prop({ default: 0 }) itemCount: number; @Prop({ type: String, enum: Object.values(CartStatusEnum), default: CartStatusEnum.CREATED }) status: keyof typeof CartStatusEnum; @Prop({ type: String, enum: Object.values(CurrencyCodeEnum), default: CurrencyCodeEnum.USD }) currencyCode: keyof typeof CurrencyCodeEnum; @Prop({ required: true }) expirationDateTime: Date; @Prop({ default: 0 }) subtotal: number; } // Generates the actual Mongoose Schema export const CartSchema = SchemaFactory.createForClass(Cart);