import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
import { Document, Types } from "mongoose";
import { CurrencyCodeEnum } from "../enums/currency-code.enum";

// Defines the interface for your document
export type PricingDocument = Pricing & Document;

@Schema()
export class Pricing {
    @Prop({
        type: Types.ObjectId,
        ref: "Product",
        required: true,
        unique: true,
    })
    productId: Types.ObjectId;

    @Prop({ required: true })
    price: number;

    @Prop({
        type: String,
        enum: Object.values(CurrencyCodeEnum).filter((value) => typeof value === "string"),
        default: CurrencyCodeEnum.USD,
    })
    currencyCode: CurrencyCodeEnum;

    @Prop({ required: false })
    supplierId: string;

    @Prop({ type: Date, required: false, default: Date.now })
    effectiveDate: Date;

    @Prop({ type: Date, required: false, default: new Date(9999, 11, 31, 23, 59, 59) })
    expiryDate: Date;

    @Prop({ required: false, default: 0 }) // Discount as a percentage (e.g., 20 for 20%)
    discount: number;
}

// Generates the actual Mongoose Schema
export const PricingSchema = SchemaFactory.createForClass(Pricing);
