import { IPaginateModel } from '@/shared/interfaces/model.interface';
import { Document, Types } from 'mongoose';

export interface IGeoLocation {
  type: 'Point';
  coordinates: [number, number];
}

export type IBaseLocation<T = {}> = Document & {
  name: string;
  isActive?: boolean;
  loc: IGeoLocation;
  createdBy?: Types.ObjectId;
  updatedBy?: Types.ObjectId;
} & T;

export type ICountry = IBaseLocation;

export type ICountryModel = IPaginateModel<ICountry>

export type IState = IBaseLocation<{
  country: Types.ObjectId;
}>;

export type IStateModel = IPaginateModel<IState>

export type ICity = IBaseLocation<{
  state: Types.ObjectId;
}>;

export type ICityModel = IPaginateModel<ICity>

export type IArea = IBaseLocation<{
  city: Types.ObjectId;
  pinCode: number[];
}>;

export type IAreaModel = IPaginateModel<IArea>
