import { Document, Types } from 'mongoose';
import { IPaginateModel } from '@/shared/interfaces/model.interface';
import { AuditFields } from '@/shared/types/common';
import { Status } from '@/shared/constants/enum.constant';

export interface IPropertyFileBase {
  name: string;
  category: string;
  description?: string;
  fileUrl: string;
  fileType: string;
  size: string;
  propertyId: Types.ObjectId;
  status: Status;
}

export interface IPropertyFile extends IPropertyFileBase, AuditFields {}

export interface IPropertyFileDoc extends IPropertyFile, Document {}

export interface IPropertyFileModel extends IPaginateModel<IPropertyFileDoc> {}

export type NewCreatedPropertyFile = IPropertyFileBase &
  Partial<Pick<AuditFields, 'createdBy' | 'updatedBy'>>;

export type UpdatePropertyFileBody = Partial<IPropertyFile>;

export interface IPropertyFileFilter {
  propertyId?: Types.ObjectId | string;
  category?: string;
  search?: string;
  size?: string;
  createdBy?: Types.ObjectId | string;
  status?: Status;
}
