import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
import { Document, Types } from "mongoose";

export type BatchDocument = Batch & Document;

@Schema({ collection: "batches", timestamps: false })
export class Batch {
  @Prop({ type: Types.ObjectId, ref: "Warehouse", required: true })
  declare warehouseId: Types.ObjectId;

  @Prop({ type: Types.ObjectId, ref: "Item", required: true })
  declare itemId: Types.ObjectId;

  @Prop({ required: true })
  declare batchNumber: string;

  @Prop({ required: true })
  declare expiryDate: string;

  /** Set to true when a stock-out transaction for this batch is approved */
  @Prop({ type: Boolean, default: false })
  declare stockedOut: boolean;
}

export const BatchSchema = SchemaFactory.createForClass(Batch);

BatchSchema.index({ warehouseId: 1, itemId: 1, batchNumber: 1 }, { unique: true });
