55 lines
1.4 KiB
Markdown
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/`.
|