This guide introduces the concept of model used in Teo server implementation. To understand how to define a model to suit your business requirements, read our guide article Data modeling. To get a list of model APIs, check our API documentation.
A model is mapped into a table or collection in the underlying database, with each of its fields mapped to a table column. This is similar to the ORM concepts. Besides, a model has a list of auto handlers which is equivalent to HTTP endpoints in traditional HTTP frameworks. Developers can declare custom request handlers under the model.
Declare a model
A model is declared in Teo schema like this:
A model has a name, optionally a documented readable name, optionally a documented description, a list of fields, optionally a list of custom handlers, optionally a list of model level decorators, a primary index, and optionally a list of indexes and unique indexes.
Model fields fall into 3 main categories:
A model must have one primary index. It can be a on single scalar field, or a compound index of some scalar fields.
A single field primary index
@id decorator can be placed on a scalar number or string field.
A compound primary index
@id decorator on the model level to create a compound primary
Handlers are custom HTTP API endpoints. Except auto handlers synthesized by Teo for models to perform basic CRUD and aggregation, developers must provide the implementation with the server API.
Teo synthesizes common CRUD and aggregate handlers for models. See Builtin auto-synthesized handlers for a list of auto-synthesized handlers.
A custom handler can be placed within the model block.
See handler CONCEPT to learn more about handlers.