"""Storage factory for creating storage adapters""" from flask import current_app class StorageFactory: """Factory for creating storage adapter instances""" @staticmethod def get_storage(): """ Get the appropriate storage adapter based on configuration Returns: StorageAdapter: Configured storage adapter instance Factory Pattern Benefits: - Centralized adapter selection logic - Easy to add new storage types (S3, GCS, etc.) - Single Responsibility Principle - FileService only handles file operations - Easy to test by injecting mock adapters """ # Check if we should use mock storage if current_app.config.get("USE_MOCK_STORAGE", False): from app.services.storage.mock_adapter import MockStorageAdapter return MockStorageAdapter() # Default to MinIO for production/development from app.services.storage.minio_client import MinIOStorageAdapter return MinIOStorageAdapter() @staticmethod def get_storage_for_testing(): """ Get mock storage adapter explicitly for testing Returns: StorageAdapter: MockStorageAdapter instance """ from app.services.storage.mock_adapter import MockStorageAdapter return MockStorageAdapter() @staticmethod def get_minio_storage(): """ Get MinIO storage adapter explicitly Returns: StorageAdapter: MinIOStorageAdapter instance """ from app.services.storage.minio_client import MinIOStorageAdapter return MinIOStorageAdapter()