"""Protocol definitions for the shared package""" from typing import Protocol, Any from pathlib import Path from dataclasses import dataclass from datetime import datetime @dataclass class FileRecord: """Core file record with all metadata""" path: Path size: int modified_time: float created_time: float disk_label: str checksum: str | None = None status: str = 'indexed' # indexed, planned, moved, verified category: str | None = None duplicate_of: str | None = None @dataclass class OperationRecord: """Record of a migration operation""" source_path: Path target_path: Path operation_type: str # move, copy, hardlink, symlink status: str = 'pending' # pending, in_progress, completed, failed error: str | None = None executed_at: datetime | None = None verified: bool = False class IDatabase(Protocol): """Protocol for database operations""" def store_file(self, file_record: FileRecord) -> None: """Store a file record""" ... def get_files_by_disk(self, disk: str) -> list[FileRecord]: """Get all files on a specific disk""" ... def store_operation(self, operation: OperationRecord) -> None: """Store an operation record""" ... def get_pending_operations(self) -> list[OperationRecord]: """Get all pending operations""" ... class ILogger(Protocol): """Protocol for logging operations""" def info(self, message: str) -> None: ... def warning(self, message: str) -> None: ... def error(self, message: str) -> None: ... def debug(self, message: str) -> None: ...