ui video selector

This commit is contained in:
2026-02-06 09:41:50 -03:00
parent daabd15c19
commit 2cf6c89fbb
7 changed files with 613 additions and 47 deletions

View File

@@ -28,7 +28,9 @@ class TypeScriptGenerator(BaseGenerator):
if hasattr(models, "models"):
# SchemaLoader
content = self._generate_from_definitions(
models.models, getattr(models, "enums", [])
models.models,
getattr(models, "enums", []),
api_models=getattr(models, "api_models", []),
)
elif isinstance(models, tuple):
# (models, enums) tuple
@@ -42,7 +44,10 @@ class TypeScriptGenerator(BaseGenerator):
output_path.write_text(content)
def _generate_from_definitions(
self, models: List[ModelDefinition], enums: List[EnumDefinition]
self,
models: List[ModelDefinition],
enums: List[EnumDefinition],
api_models: List[ModelDefinition] = None,
) -> str:
"""Generate from ModelDefinition objects."""
lines = self._generate_header()
@@ -58,6 +63,14 @@ class TypeScriptGenerator(BaseGenerator):
lines.extend(self._generate_interface_from_definition(model_def))
lines.append("")
# Generate API request/response interfaces
if api_models:
lines.append("// API request/response types")
lines.append("")
for model_def in api_models:
lines.extend(self._generate_interface_from_definition(model_def))
lines.append("")
return "\n".join(lines)
def _generate_from_dataclasses(self, dataclasses: List[type]) -> str:

View File

@@ -60,6 +60,7 @@ class SchemaLoader:
def __init__(self, schema_path: Path):
self.schema_path = Path(schema_path)
self.models: List[ModelDefinition] = []
self.api_models: List[ModelDefinition] = []
self.enums: List[EnumDefinition] = []
self.grpc_messages: List[ModelDefinition] = []
self.grpc_service: Optional[GrpcServiceDefinition] = None
@@ -79,6 +80,11 @@ class SchemaLoader:
for cls in dataclasses:
self.models.append(self._parse_dataclass(cls))
# Extract API_MODELS (TypeScript-only request/response types)
api_models = getattr(module, "API_MODELS", [])
for cls in api_models:
self.api_models.append(self._parse_dataclass(cls))
# Extract ENUMS
enums = getattr(module, "ENUMS", [])
for enum_cls in enums: