import { Injectable } from "@nestjs/common";
import { InjectModel } from "@nestjs/mongoose";
import { Model } from "mongoose";
import { Vendor, VendorDocument } from "./schemas/vendor.schema";

@Injectable()
export class VendorsService {
  constructor(
    @InjectModel(Vendor.name) private readonly vendorModel: Model<VendorDocument>,
  ) {}

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

  async create(payload: { name: string; countryOfOrigin?: string }) {
    const doc = await this.vendorModel.create({
      name: payload.name,
      active: true,
      countryOfOrigin: payload.countryOfOrigin ?? null,
    });
    return doc.toObject();
  }

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