import { Injectable } from "@nestjs/common";
import { InjectModel } from "@nestjs/mongoose";
import { Model } from "mongoose";
import { Warehouse, WarehouseDocument } from "./schemas/warehouse.schema";

@Injectable()
export class WarehousesService {
  constructor(
    @InjectModel(Warehouse.name) private readonly warehouseModel: Model<WarehouseDocument>,
  ) {}

  findAll() {
    return this.warehouseModel.find().lean().exec();
  }

  async create(payload: { name: string; code: string; aliases?: string[] }) {
    const doc = await this.warehouseModel.create({
      name: payload.name,
      code: payload.code,
      aliases: payload.aliases ?? [],
      active: true,
    });
    return doc.toObject();
  }

  async update(
    id: string,
    payload: Partial<{ name: string; code: string; aliases: string[]; active: boolean }>,
  ) {
    const updated = await this.warehouseModel
      .findByIdAndUpdate(id, { $set: payload }, { new: true })
      .lean()
      .exec();
    return updated ?? null;
  }
}
