/** * Files Repository * * Data access layer for Files/Media entities. * Extends BaseRepository from @plyaz/db for consistent CRUD operations. */ import { BaseRepository } from '@plyaz/db'; import type { DatabaseResult, PaginatedResult, QueryOptions, DatabaseServiceInterface, OperationConfig } from '@plyaz/types/db'; import type { FilesDatabaseRow } from '@plyaz/types/core'; import type { ENTITY_TYPE } from '@plyaz/types/storage'; /** * Files Repository * * Data access layer for Files/Media entities. * Extends BaseRepository from @plyaz/db for consistent CRUD operations. * * Inherited from BaseRepository (used directly, no override needed): * - findById(id) - Get file by ID * - delete(id) - Hard delete file * - softDelete(id) - Soft delete file * - exists(id) - Check if file exists * - query() - Fluent QueryBuilder for complex queries * - count(filter) - Count files matching filter * - findOne(filter) - Find first matching file * * Overridden with domain logic: * - findMany(options) - Default sorting by created_at DESC * - create(data) - Auto-generate ID and timestamps * * Domain-specific methods: * - findByUserId(userId) - Get all files for a user * - findByEntityId(entityType, entityId) - Get files for an entity * - findByStoragePath(path) - Find file by storage path (for deduplication) * - countByUserId(userId) - Count files for a user */ export declare class FilesRepository extends BaseRepository { constructor(db: DatabaseServiceInterface); /** * Create repository instance. * Uses DbService if initialized. */ static create(): FilesRepository; /** * Find multiple entities with default sorting */ findMany(options?: QueryOptions, config?: OperationConfig): Promise>>; /** * Create new file record with timestamps (ID auto-generated by DB) */ create(data: Partial, config?: OperationConfig): Promise>; /** * Get the table name for this repository */ getTableName(): string; /** * Find all files for a user */ findByUserId(userId: string, options?: { limit?: number; offset?: number; }): Promise>>; /** * Find files for a specific entity (polymorphic association) */ findByEntityId(entityType: ENTITY_TYPE, entityId: string, options?: { limit?: number; offset?: number; }): Promise>>; /** * Find file by storage path (for deduplication checks) */ findByStoragePath(storagePath: string): Promise>; /** * Count files for a user */ countByUserId(userId: string): Promise>; /** * Find files by MIME type */ findByMimeType(mimeType: string, options?: { limit?: number; offset?: number; }): Promise>>; /** * Find files by type (IMAGE, VIDEO, DOCUMENT, AUDIO) */ findByType(type: string, options?: { limit?: number; offset?: number; }): Promise>>; } //# sourceMappingURL=FilesRepository.d.ts.map