import { type PropertyMediaEntity } from '../entities/property-media.entity';
import { type PropertyEntity } from '../entities/property.entity';

export const PROPERTY_REPOSITORY = Symbol('PROPERTY_REPOSITORY');

export interface IPropertyRepository {
  findById(id: string): Promise<PropertyEntity | null>;
  save(property: PropertyEntity): Promise<void>;
  update(property: PropertyEntity): Promise<void>;
  addMedia(media: PropertyMediaEntity): Promise<void>;
  findMediaByPropertyId(propertyId: string): Promise<PropertyMediaEntity[]>;
  deleteMedia(mediaId: string): Promise<void>;
  countMediaByPropertyId(propertyId: string): Promise<number>;
  updateMediaOrder(propertyId: string, mediaOrder: { mediaId: string; order: number }[]): Promise<void>;
}
