import { Schema, model } from 'mongoose';

import {
  IArea,
  IAreaModel,
} from '@/modules/master/location/location.interfaces.js';
import { paginate, toJSON } from '@/shared/utils/plugins/index.js';

const areaSchema = new Schema<IArea>(
  {
    name: { type: String, trim: true },
    pinCode: { type: [Number], default: [] },
    city: { type: Schema.Types.ObjectId, ref: 'City' },
    loc: {
      type: {
        type: String,
        enum: ['Point'],
        required: true,
      },
      coordinates: {
        type: [Number],
        required: true,
      },
    },
    createdBy: { type: Schema.Types.ObjectId, ref: 'User' },
    updatedBy: { type: Schema.Types.ObjectId, ref: 'User' },
  },
  { timestamps: true },
);

areaSchema.plugin(toJSON);
areaSchema.plugin(paginate);


const Area = model<IArea, IAreaModel>('Area', areaSchema)
export default Area

