57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
|
|
"""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()
|