|
|
@@ -20,13 +20,15 @@ class TemplateManager(BaseMongoManager):
|
|
|
|
|
|
async def create_template(self, name: str, template_str: str,
|
|
|
template_type: TemplateType,
|
|
|
- description: str = None) -> Template:
|
|
|
+ description: str = None,
|
|
|
+ collection_name: str = None) -> Template:
|
|
|
"""创建新模板"""
|
|
|
template = Template(
|
|
|
name=name,
|
|
|
template_str=template_str,
|
|
|
template_type=template_type,
|
|
|
- description=description
|
|
|
+ description=description,
|
|
|
+ collection_name=collection_name
|
|
|
)
|
|
|
await template.insert()
|
|
|
return template
|
|
|
@@ -34,6 +36,7 @@ class TemplateManager(BaseMongoManager):
|
|
|
async def create_or_update_template(self, name: str, template_str: str,
|
|
|
template_type: TemplateType,
|
|
|
description: str = None,
|
|
|
+ collection_name: str = None,
|
|
|
if_exists: str = "update") -> Template:
|
|
|
"""
|
|
|
创建模板,如果已存在则根据if_exists参数处理
|
|
|
@@ -56,7 +59,8 @@ class TemplateManager(BaseMongoManager):
|
|
|
return await self.update_template(
|
|
|
name=name,
|
|
|
new_template_str=template_str,
|
|
|
- new_description=description
|
|
|
+ new_description=description,
|
|
|
+ new_collection_name=collection_name
|
|
|
)
|
|
|
else:
|
|
|
raise ValueError(f"Invalid if_exists value: {if_exists}. Must be 'update' or 'ignore'")
|
|
|
@@ -64,7 +68,8 @@ class TemplateManager(BaseMongoManager):
|
|
|
name=name,
|
|
|
template_str=template_str,
|
|
|
template_type=template_type,
|
|
|
- description=description
|
|
|
+ description=description,
|
|
|
+ collection_name=collection_name
|
|
|
)
|
|
|
|
|
|
async def get_template(self, name: str) -> Optional[Template]:
|
|
|
@@ -73,7 +78,8 @@ class TemplateManager(BaseMongoManager):
|
|
|
return await Template.find_one(Template.name == name)
|
|
|
|
|
|
async def update_template(self, name: str, new_template_str: str = None,
|
|
|
- new_description: str = None) -> Optional[Template]:
|
|
|
+ new_description: str = None,
|
|
|
+ new_collection_name: str = None) -> Optional[Template]:
|
|
|
"""更新模板"""
|
|
|
template = await self.get_template(name)
|
|
|
if not template:
|
|
|
@@ -83,6 +89,8 @@ class TemplateManager(BaseMongoManager):
|
|
|
template.template_str = new_template_str
|
|
|
if new_description:
|
|
|
template.description = new_description
|
|
|
+ if new_collection_name is not None:
|
|
|
+ template.collection_name = new_collection_name
|
|
|
|
|
|
await template.update_timestamp()
|
|
|
return template
|
|
|
@@ -122,9 +130,10 @@ class TemplateManager(BaseMongoManager):
|
|
|
|
|
|
pipeline = self.render_template(template.template_str, context)
|
|
|
|
|
|
- if not collection_name:
|
|
|
- if template.template_type == TemplateType.AGGREGATION:
|
|
|
- collection_name = "Product" # 默认集合
|
|
|
+ if not collection_name and template.collection_name:
|
|
|
+ collection_name = template.collection_name
|
|
|
+ elif not collection_name and template.template_type == TemplateType.AGGREGATION:
|
|
|
+ collection_name = "Product" # 默认集合
|
|
|
|
|
|
if not collection_name:
|
|
|
raise ValueError("Collection name is required for this template type")
|