import { Schema, model } from 'mongoose';

import { Status } from '@/modules/partnerNetwork/partnerNetwork.constant';
import {
  IPartnerNetworkDoc,
  IPartnerNetworkModel,
} from './partnerNetwork.interface';
import { paginate, toJSON } from '@/shared/utils/plugins';

const partnerRequestSchema = new Schema<IPartnerNetworkDoc>(
  {
    senderId: { type: Schema.Types.ObjectId, ref: 'User' },
    receiverId: { type: Schema.Types.ObjectId, ref: 'User' },
    companyId: { type: Schema.Types.ObjectId, ref: 'Company' },
    status: {
      type: String,
      enum: Object.values(Status),
      default: Status.PENDING,
    },
    createdAt: { type: Date, default: Date.now },
    updatedAt: { type: Date, default: Date.now },
  },
  { timestamps: true },
);

partnerRequestSchema.plugin(toJSON);
partnerRequestSchema.plugin(paginate);

partnerRequestSchema.index({ senderId: 1, receiverId: 1 }, { unique: true });

export const PartnerNetwork = model<IPartnerNetworkDoc, IPartnerNetworkModel>(
  'PartnerNetwork',
  partnerRequestSchema,
);
