package file

// Repository defines the data access operations for files
type Repository interface {
	// Create stores a new file record
	Create(file *File) error

	// Get retrieves a file by its ID
	Get(id string) (*File, error)

	// Update modifies an existing file record
	Update(file *File) error

	// Delete removes a file record by its ID
	Delete(id string) error

	// List returns all file records
	List() ([]*File, error)

	// ListByCollection returns all files belonging to a specific collection
	ListByCollection(collectionID string) ([]*File, error)

	// ListByStatus returns all files with a specific sync status
	ListByStatus(status SyncStatus) ([]*File, error)

	// Exists checks if a file with the given ID exists
	Exists(id string) (bool, error)
}
