fc / apps /cases /services /case /case_template_binding_query_service.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
2.44 kB
"""Business logic services."""
from __future__ import annotations
import logging
from apps.cases.models import CaseTemplateBinding
from apps.core.dto import CaseTemplateBindingDTO
logger = logging.getLogger("apps.cases")
class CaseTemplateBindingQueryService:
def get_case_template_binding_internal(self, case_id: int) -> CaseTemplateBindingDTO | None:
try:
binding = CaseTemplateBinding.objects.select_related("template").filter(case_id=case_id).first()
if not binding:
return None
return CaseTemplateBindingDTO(
id=binding.id,
case_id=binding.case_id,
template_id=binding.template_id,
template_name=binding.template.name if binding.template else "",
template_function_code=None,
binding_source=binding.binding_source,
created_at=str(binding.created_at) if binding.created_at else None,
)
except Exception:
logger.exception("get_case_template_binding_internal_failed", extra={"case_id": case_id})
raise
def get_case_template_bindings_by_name_internal(
self, case_id: int, template_name: str
) -> list[CaseTemplateBindingDTO]:
try:
bindings = CaseTemplateBinding.objects.filter(
case_id=case_id,
template__name=template_name,
template__is_active=True,
).select_related("template")
result: list[CaseTemplateBindingDTO] = []
for binding in bindings:
result.append(
CaseTemplateBindingDTO(
id=binding.id,
case_id=binding.case_id,
template_id=binding.template_id,
template_name=binding.template.name if binding.template else "",
template_function_code=None,
binding_source=getattr(binding, "binding_source", "manual"),
created_at=str(binding.created_at) if binding.created_at else None,
)
)
return result
except Exception:
logger.exception(
"get_case_template_bindings_by_name_internal_failed",
extra={"case_id": case_id, "template_name": template_name},
)
raise