You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

storage_factory.py 768B

12345678910111213141516171819202122232425262728293031
  1. import os
  2. from enum import Enum
  3. from rag.utils.azure_sas_conn import RAGFlowAzureSasBlob
  4. from rag.utils.azure_spn_conn import RAGFlowAzureSpnBlob
  5. from rag.utils.minio_conn import RAGFlowMinio
  6. from rag.utils.s3_conn import RAGFlowS3
  7. class Storage(Enum):
  8. MINIO = 1
  9. AZURE_SPN = 2
  10. AZURE_SAS = 3
  11. AWS_S3 = 4
  12. class StorageFactory:
  13. storage_mapping = {
  14. Storage.MINIO: RAGFlowMinio,
  15. Storage.AZURE_SPN: RAGFlowAzureSpnBlob,
  16. Storage.AZURE_SAS: RAGFlowAzureSasBlob,
  17. Storage.AWS_S3: RAGFlowS3,
  18. }
  19. @classmethod
  20. def create(cls, storage: Storage):
  21. return cls.storage_mapping[storage]()
  22. STORAGE_IMPL_TYPE = os.getenv('STORAGE_IMPL', 'MINIO')
  23. STORAGE_IMPL = StorageFactory.create(Storage[STORAGE_IMPL_TYPE])