/**
 * Repository Interface: MediaRepository
 *
 * Defines the contract for media file persistence.
 */

import type { Media } from '../entities/Media';

export interface MediaRepository {
  /**
   * Save a media file
   */
  save(media: Media): Promise<void>;

  /**
   * Find a media file by ID
   */
  findById(id: string): Promise<Media | null>;

  /**
   * Find media files by uploader
   */
  findByUploadedBy(uploadedBy: string): Promise<Media[]>;

  /**
   * Delete a media file
   */
  delete(id: string): Promise<void>;
}