41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import logging
|
|
|
|
import yaml
|
|
from app.engine.loaders.db import DBLoaderConfig, get_db_documents
|
|
from app.engine.loaders.file import FileLoaderConfig, get_file_documents
|
|
from app.engine.loaders.web import WebLoaderConfig, get_web_documents
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def load_configs():
|
|
with open("config/loaders.yaml",'r', encoding='utf-8') as f:
|
|
configs = yaml.safe_load(f)
|
|
return configs
|
|
|
|
|
|
def get_documents():
|
|
documents = []
|
|
config = load_configs()
|
|
if config is None or len(config.items()) == 0:
|
|
return documents
|
|
|
|
for loader_type, loader_config in config.items():
|
|
logger.info(
|
|
f"Loading documents from loader: {loader_type}, config: {loader_config}"
|
|
)
|
|
|
|
loader_config = loader_config or []
|
|
match loader_type:
|
|
case "file":
|
|
document = get_file_documents(FileLoaderConfig(**loader_config))
|
|
case "web":
|
|
document = get_web_documents(WebLoaderConfig(**loader_config))
|
|
case "db":
|
|
document = get_db_documents(configs=[DBLoaderConfig(**cfg) for cfg in loader_config])
|
|
case _:
|
|
raise ValueError(f"Invalid loader type: {loader_type}")
|
|
documents.extend(document)
|
|
|
|
return documents
|