import os | |
from enum import Enum | |
from rag.utils.azure_sas_conn import RAGFlowAzureSasBlob | |
from rag.utils.azure_spn_conn import RAGFlowAzureSpnBlob | |
from rag.utils.minio_conn import RAGFlowMinio | |
from rag.utils.s3_conn import RAGFlowS3 | |
class Storage(Enum): | |
MINIO = 1 | |
AZURE_SPN = 2 | |
AZURE_SAS = 3 | |
AWS_S3 = 4 | |
class StorageFactory: | |
storage_mapping = { | |
Storage.MINIO: RAGFlowMinio, | |
Storage.AZURE_SPN: RAGFlowAzureSpnBlob, | |
Storage.AZURE_SAS: RAGFlowAzureSasBlob, | |
Storage.AWS_S3: RAGFlowS3, | |
} | |
def create(cls, storage: Storage): | |
return cls.storage_mapping[storage]() | |
STORAGE_IMPL_TYPE = os.getenv('STORAGE_IMPL', 'MINIO') | |
STORAGE_IMPL = StorageFactory.create(Storage[STORAGE_IMPL_TYPE]) | |