mirror of
https://github.com/frappe/books.git
synced 2024-12-23 11:29:03 +00:00
43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# Schema
|
|
|
|
Main purpose of this is to describe the shape of the models' table in the
|
|
database. But there is some irrelevant information in the schemas with
|
|
respect to this goal. This is information is allowed as long as it is not
|
|
dynamic, which is impossible anyways as the files are data (`.json`, not `.js`)
|
|
|
|
If any field has to have a dynamic value, it should be added to the controller
|
|
file by the same name, check the `books/models` subdirectory for this.
|
|
|
|
There are a few types of schemas:
|
|
|
|
- **Regional**: Schemas that are in the _'../regional'_ subdirectories
|
|
these can be of any of the below types.
|
|
- **Abstract**: Schemas that are not used as they are but only after they are
|
|
extended by Stub schemas. Indentified by the `isAbstract` field
|
|
- **Subclass**: Schemas that have an `"extends"` field on them, the value of which
|
|
points to an Abstract schema.
|
|
- **Complete**: Schemas which are neither abstract nor stub.
|
|
|
|
For more detail on the meta structure of the schema check `books/schemas/types.ts`.
|
|
|
|
## Final Schema
|
|
|
|
This is the schema which is used by the database and app code and is built by
|
|
combining the above types of schemas.
|
|
|
|
The order in which a schema is built is:
|
|
|
|
1. Build _Regional_ schemas by overriding the fields and other properties of the
|
|
non regional variants.
|
|
2. Combine _Subclass_ schemas with _Abstract_ schemas to get complete schemas.
|
|
|
|
_Note: if a Regional schema is not present as a non regional
|
|
variant it's used as it is._
|
|
|
|
## Additional Notes
|
|
|
|
In all the schemas, the `"name"` field/column is the primary key. If it isn't
|
|
explicitly added, the schema builder will add it in.
|
|
|
|
The following schema fields will be implicitly translated by the frontend:
|
|
`"label"`, `"description"`, and `"placeholder"`, irrespective of nesting. |