Files
soleprint/docs/data/en/station-modelgen.md
2026-04-14 10:32:05 -03:00

55 lines
1.4 KiB
Markdown

# Modelgen
Generates platform-specific models from JSON Schema. Reads schema once, writes models for multiple targets.
**Status:** dev
---
## What It Does
Modelgen takes a JSON Schema definition and produces model code for different platforms:
- **Pydantic** -- Python data validation models
- **Django ORM** -- Django model classes
- **Prisma** -- Prisma schema definitions
One schema, multiple outputs.
## Extractors
Modelgen also works in reverse. Extractors read existing codebases and produce a normalized schema representation:
- **Django extractor** -- reads Django model files
- **SQLAlchemy extractor** -- reads SQLAlchemy model files
- **Prisma extractor** -- reads Prisma schema files
Extractors feed into graphgen for visualization.
## Output
Generated models are written to `gen/<room>/models/`.
```
gen/<room>/models/
├── pydantic/
├── django/
└── prisma/
```
## CLI
```bash
python -m modelgen
```
Reads from `schema.json` (the project source of truth) and writes to the configured output directory.
## Shared Distribution
Modelgen is also distributed as a shared component via `ctrl/spr.py`. This allows other projects to use model generation without running full soleprint.
## Schema Source
The source of truth is `schema.json` at the project root. All model generation starts from this file. Room-specific schema extensions live in `cfg/<room>/models/`.