51 lines
1.3 KiB
Bash
Executable File
51 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Model generation script for MPR
|
|
# Generates Django, Pydantic, TypeScript, and Protobuf from schema/models
|
|
|
|
set -e
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
echo "Generating models from schema/models..."
|
|
|
|
# Django ORM models: domain models + enums
|
|
python -m modelgen from-schema \
|
|
--schema schema/models \
|
|
--output mpr/media_assets/models.py \
|
|
--targets django \
|
|
--include dataclasses,enums
|
|
|
|
# Pydantic schemas for FastAPI: domain models + enums
|
|
python -m modelgen from-schema \
|
|
--schema schema/models \
|
|
--output api/schemas/models.py \
|
|
--targets pydantic \
|
|
--include dataclasses,enums
|
|
|
|
# TypeScript types for Timeline UI: domain models + enums + API types
|
|
python -m modelgen from-schema \
|
|
--schema schema/models \
|
|
--output ui/timeline/src/types.ts \
|
|
--targets typescript \
|
|
--include dataclasses,enums,api
|
|
|
|
# Protobuf for gRPC: gRPC messages + service
|
|
python -m modelgen from-schema \
|
|
--schema schema/models \
|
|
--output rpc/protos/worker.proto \
|
|
--targets proto \
|
|
--include grpc
|
|
|
|
# Generate gRPC stubs from proto
|
|
echo "Generating gRPC stubs..."
|
|
python -m grpc_tools.protoc \
|
|
-I rpc/protos \
|
|
--python_out=rpc \
|
|
--grpc_python_out=rpc \
|
|
rpc/protos/worker.proto
|
|
|
|
# Fix relative import in generated grpc stub
|
|
sed -i 's/^import worker_pb2/from . import worker_pb2/' rpc/worker_pb2_grpc.py
|
|
|
|
echo "Done!"
|