| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- from typing import Optional
 - 
 - from extensions.ext_database import db
 - from models.dataset import Dataset, Pipeline, PipelineBuiltInTemplate
 - from services.rag_pipeline.pipeline_template.pipeline_template_base import PipelineTemplateRetrievalBase
 - from services.rag_pipeline.pipeline_template.pipeline_template_type import PipelineTemplateType
 - 
 - 
 - class DatabasePipelineTemplateRetrieval(PipelineTemplateRetrievalBase):
 -     """
 -     Retrieval pipeline   template from database
 -     """
 - 
 -     def get_pipeline_templates(self, language: str) -> dict:
 -         result = self.fetch_pipeline_templates_from_db(language)
 -         return result
 - 
 -     def get_pipeline_template_detail(self, pipeline_id: str):
 -         result = self.fetch_pipeline_template_detail_from_db(pipeline_id)
 -         return result
 - 
 -     def get_type(self) -> str:
 -         return PipelineTemplateType.DATABASE
 - 
 -     @classmethod
 -     def fetch_pipeline_templates_from_db(cls, language: str) -> dict:
 -         """
 -         Fetch pipeline templates from db.
 -         :param language: language
 -         :return:
 -         """
 - 
 -         pipeline_built_in_templates: list[PipelineBuiltInTemplate] = (
 -             db.session.query(PipelineBuiltInTemplate).filter(PipelineBuiltInTemplate.language == language).all()
 -         )
 - 
 -         recommended_pipelines_results = []
 -         for pipeline_built_in_template in pipeline_built_in_templates:
 -             pipeline_model: Pipeline = pipeline_built_in_template.pipeline
 - 
 -             recommended_pipeline_result = {
 -                 "id": pipeline_built_in_template.id,
 -                 "name": pipeline_built_in_template.name,
 -                 "pipeline_id": pipeline_model.id,
 -                 "description": pipeline_built_in_template.description,
 -                 "icon": pipeline_built_in_template.icon,
 -                 "copyright": pipeline_built_in_template.copyright,
 -                 "privacy_policy": pipeline_built_in_template.privacy_policy,
 -                 "position": pipeline_built_in_template.position,
 -             }
 -             dataset: Dataset = pipeline_model.dataset
 -             if dataset:
 -                 recommended_pipeline_result["chunk_structure"] = dataset.chunk_structure
 -                 recommended_pipelines_results.append(recommended_pipeline_result)
 - 
 -         return {"pipeline_templates": recommended_pipelines_results}
 - 
 -     @classmethod
 -     def fetch_pipeline_template_detail_from_db(cls, pipeline_id: str) -> Optional[dict]:
 -         """
 -         Fetch pipeline template detail from db.
 -         :param pipeline_id: Pipeline ID
 -         :return:
 -         """
 -         from services.rag_pipeline.rag_pipeline_dsl_service import RagPipelineDslService
 - 
 -         # is in public recommended list
 -         pipeline_template = (
 -             db.session.query(PipelineBuiltInTemplate).filter(PipelineBuiltInTemplate.id == pipeline_id).first()
 -         )
 - 
 -         if not pipeline_template:
 -             return None
 - 
 -         # get app detail
 -         pipeline = db.session.query(Pipeline).filter(Pipeline.id == pipeline_template.pipeline_id).first()
 -         if not pipeline or not pipeline.is_public:
 -             return None
 - 
 -         return {
 -             "id": pipeline.id,
 -             "name": pipeline.name,
 -             "icon": pipeline.icon,
 -             "mode": pipeline.mode,
 -             "export_data": RagPipelineDslService.export_rag_pipeline_dsl(pipeline=pipeline),
 -         }
 
 
  |