52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
# Models #
|
|
|
|
- In this folder the configuration files for the models of data classes (as `*.yaml`-files) are stored.
|
|
- These are interpreted by `openapi` to generate the classes for the source code during the `build` phase of the programme.
|
|
- Once the models are generated, the app configurations are read at run time and interpreted as these models.
|
|
- Generating instead of manually encoding the classes is safer/more stable as it allows for validation.
|
|
|
|
## Folder structure ##
|
|
|
|
As per the 3rd point, the `yaml`-file/s for the models (schemata)
|
|
and the `yaml`-file/s for actual configuration values for the app
|
|
are to be kept separately.
|
|
|
|
All models are to be stored in [./models](../models/),
|
|
whereas configuration files are to be stored in [./assets](../assets/).
|
|
|
|
Note that the generated python files are not stored in the repository.
|
|
When deployed on a server, these are generated as part of the `build`-process.
|
|
|
|
## Developer notes ##
|
|
|
|
### Prerequisites ###
|
|
|
|
For the python source code, we currently use:
|
|
|
|
- Python: `v3.10.*`
|
|
- Modules:
|
|
- `datamodel-code-generator==0.12.0`
|
|
|
|
(This is all taken care of during the `build` process.)
|
|
|
|
### Building the models ###
|
|
|
|
To build the models before run time, use the following command + options:
|
|
```bash
|
|
datamodel-codegen
|
|
--input-file-type openapi
|
|
--encoding "UTF-8"
|
|
--disable-timestamp
|
|
--use-schema-description
|
|
--snake-case-field
|
|
--strict-nullable
|
|
--input <path/to/file.yml>
|
|
--output <path/to/file.py>
|
|
```
|
|
(cf. https://pydantic-docs.helpmanual.io/datamodel_code_generator/).
|
|
|
|
Alternatively, call:
|
|
```
|
|
just build
|
|
```
|