timeline and readme

This commit is contained in:
2026-02-03 14:00:20 -03:00
parent a5057ba412
commit 3db8c0c453
16 changed files with 682 additions and 2 deletions

View File

@@ -23,7 +23,7 @@ from typing import Any, Callable, Union, get_args, get_origin, get_type_hints
PROJECT_ROOT = Path(__file__).parent.parent
sys.path.insert(0, str(PROJECT_ROOT))
from schema.models import DATACLASSES, ENUMS, GRPC_MESSAGES, GRPC_SERVICE
from schema.models import API_MODELS, DATACLASSES, ENUMS, GRPC_MESSAGES, GRPC_SERVICE
# =============================================================================
# Type Dispatch Tables
@@ -520,11 +520,18 @@ def generate_typescript() -> str:
lines.append(f"export type {enum.__name__} = {values};")
lines.append("")
# Interfaces
# Interfaces - domain models
for cls in DATACLASSES:
lines.extend(generate_ts_interface(cls))
lines.append("")
# Interfaces - API request/response models
lines.append("// API Request/Response Types")
lines.append("")
for cls in API_MODELS:
lines.extend(generate_ts_interface(cls))
lines.append("")
return "\n".join(lines)

View File

@@ -5,6 +5,7 @@ This module exports all dataclasses, enums, and constants that the generator
should process. Add new models here to have them included in generation.
"""
from .api import CreateJobRequest, SystemStatus
from .grpc import (
GRPC_SERVICE,
CancelRequest,
@@ -23,6 +24,10 @@ from .presets import BUILTIN_PRESETS, TranscodePreset
# Core domain models - generates Django, Pydantic, TypeScript
DATACLASSES = [MediaAsset, TranscodePreset, TranscodeJob]
# API request/response models - generates TypeScript only (no Django)
# WorkerStatus from grpc.py is reused here
API_MODELS = [CreateJobRequest, SystemStatus, WorkerStatus]
# Status enums - included in generated code
ENUMS = [AssetStatus, JobStatus]
@@ -43,6 +48,9 @@ __all__ = [
"MediaAsset",
"TranscodePreset",
"TranscodeJob",
# API Models
"CreateJobRequest",
"SystemStatus",
# Enums
"AssetStatus",
"JobStatus",
@@ -58,6 +66,7 @@ __all__ = [
"Empty",
# For generator
"DATACLASSES",
"API_MODELS",
"ENUMS",
"GRPC_MESSAGES",
"BUILTIN_PRESETS",

32
schema/models/api.py Normal file
View File

@@ -0,0 +1,32 @@
"""
API Request/Response Schema Definitions
These are separate from the main domain models and represent
the shape of data sent to/from the API endpoints.
"""
from dataclasses import dataclass
from typing import Optional
from uuid import UUID
@dataclass
class CreateJobRequest:
"""Request body for creating a transcode/trim job."""
source_asset_id: UUID
preset_id: Optional[UUID] = None
trim_start: Optional[float] = None # seconds
trim_end: Optional[float] = None # seconds
output_filename: Optional[str] = None
@dataclass
class SystemStatus:
"""System status response."""
status: str
version: str
# Note: WorkerStatus is defined in grpc.py and reused here