您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

schema_manager.py 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from collections.abc import Mapping
  2. from typing import Any, Optional
  3. from core.schemas.registry import SchemaRegistry
  4. class SchemaManager:
  5. """Schema manager provides high-level schema operations"""
  6. def __init__(self, registry: Optional[SchemaRegistry] = None):
  7. self.registry = registry or SchemaRegistry.default_registry()
  8. def get_all_schema_definitions(self, version: str = "v1") -> list[Mapping[str, Any]]:
  9. """
  10. Get all JSON Schema definitions for a specific version
  11. Args:
  12. version: Schema version, defaults to v1
  13. Returns:
  14. Array containing schema definitions, each element contains name and schema fields
  15. """
  16. return self.registry.get_all_schemas_for_version(version)
  17. def get_schema_by_name(self, schema_name: str, version: str = "v1") -> Optional[Mapping[str, Any]]:
  18. """
  19. Get a specific schema by name
  20. Args:
  21. schema_name: Schema name
  22. version: Schema version, defaults to v1
  23. Returns:
  24. Dictionary containing name and schema, returns None if not found
  25. """
  26. uri = f"https://dify.ai/schemas/{version}/{schema_name}.json"
  27. schema = self.registry.get_schema(uri)
  28. if schema:
  29. return {
  30. "name": schema_name,
  31. "schema": schema
  32. }
  33. return None
  34. def list_available_schemas(self, version: str = "v1") -> list[str]:
  35. """
  36. List all available schema names for a specific version
  37. Args:
  38. version: Schema version, defaults to v1
  39. Returns:
  40. List of schema names
  41. """
  42. return self.registry.list_schemas(version)
  43. def list_available_versions(self) -> list[str]:
  44. """
  45. List all available schema versions
  46. Returns:
  47. List of versions
  48. """
  49. return self.registry.list_versions()