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
text/typescript
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 {
({ type: [Types.ObjectId], ref: "Product" })
product: Product;
({ required: true, default: 1 })
quantity: number;
}
()
export class Cart {
({ default: false })
isCheckoutable: boolean;
({ required: true })
referenceId: string;
()
items: CartItem[];
({ default: 0 })
itemCount: number;
({ type: String, enum: Object.values(CartStatusEnum), default: CartStatusEnum.CREATED })
status: keyof typeof CartStatusEnum;
({ type: String, enum: Object.values(CurrencyCodeEnum), default: CurrencyCodeEnum.USD })
currencyCode: keyof typeof CurrencyCodeEnum;
({ required: true })
expirationDateTime: Date;
({ default: 0 })
subtotal: number;
}
// Generates the actual Mongoose Schema
export const CartSchema = SchemaFactory.createForClass(Cart);