db_prompts.py

Code Hygiene Score: 100

Keine Issues gefunden.

Klassen 1

Code

"""
Database Prompts Mixin

Single Responsibility: Prompt retrieval and management.
"""


class PromptsMixin:
    """Mixin for prompt operations.

    Provides:
    - get_prompt(): Get prompt by name
    - get_prompt_by_use_case(): Get prompt by use case with full metadata
    """

    def get_prompt(self, name: str, version: str = None) -> str | None:
        """Get a prompt by name (optionally specific version).

        Args:
            name: Prompt name
            version: Optional specific version

        Returns:
            Prompt content or None if not found
        """
        if version:
            cursor = self.execute(
                "SELECT content FROM prompts WHERE name = %s AND version = %s",
                (name, version),
            )
        else:
            cursor = self.execute(
                """SELECT content FROM prompts
                   WHERE name = %s AND is_active = 1
                   ORDER BY version DESC LIMIT 1""",
                (name,),
            )
        result = cursor.fetchone()
        cursor.close()
        return result["content"] if result else None

    def get_prompt_by_use_case(self, use_case: str, version: str = None) -> dict | None:
        """Get prompt by use_case with full metadata for provenance tracking.

        Args:
            use_case: The use case (entity_extraction, semantic_analysis, etc.)
            version: Optional specific version (otherwise latest active)

        Returns:
            Dict with id, name, version, content, use_case or None
        """
        if version:
            cursor = self.execute(
                """SELECT id, name, version, content, use_case
                   FROM prompts
                   WHERE use_case = %s AND version = %s""",
                (use_case, version),
            )
        else:
            cursor = self.execute(
                """SELECT id, name, version, content, use_case
                   FROM prompts
                   WHERE use_case = %s AND is_active = 1
                   ORDER BY version DESC LIMIT 1""",
                (use_case,),
            )
        result = cursor.fetchone()
        cursor.close()
        return result
← Übersicht Graph