Data models
Modeling approach
The model definition in Hapify is agnostic and featured-oriented (behavioral), which means Hapify defines what the model should do, not how it will do it.
Access management
Hapify supports the 6 following base operations:
- Create
- Read
- Update
- Delete
- Search
- Count
For each of these actions, Hapify allows you to define the following access restrictions:
- Guest: user who is not logged-in.
- Authenticated: logged-in user.
- Owner : logged-in user who owns the entity (see Field attributes for more details).
- Admin: logged-in super-admin user.
Accesses are inclusive, which means the Authenticated restriction necessarily includes Owner and Admin.
Guest is the most permissive and Admin the least permissive. Therefore Admin < Owner < Authenticated < Guest.
Fields
A model contains a list of fields. Each field is defined by:
- a name
- a type
- a subtype (optional)
- a set of (behavioral) attributes.
Types and subtypes
Available types ans subtypes are:
stringemail,password,url,text,rich
numberinteger,float,latitude,longitude
booleandatetimedate,time
enumentity(reference to another model)oneOne,oneMany,manyOne,manyMany
objectfileimage,video,audio,document
Field attributes
-
Primary: the field is the primary identifier.
-
Unique: the field contains unique values, required to avoid duplicates. A model could have multiple unique keys. (e.g.: user's email or coupon code).
-
Label: the field is a human readable identifier. (e.g.: user's first name and last name, a movie title).
-
Nullable: the field can contain empty value. In other words, it is not required.
-
Multiple: this field will contain not a single value but a list of value or references.
-
Embedded: ability to automatically attach data from a linked entity. (e.g.: When you get a user's details, you may want to get their avatar at the same time). This can be used to embed forms as well.
-
Searchable: ability to search for entities based on this field.
-
Sortable: ability to sort search results based on this field.
-
Hidden: this field should never be sent to the end-user. (e.g.: user's password).
-
Internal: a value defined internally by the system, which the end-user cannot set (e.g.: entity creation date, primary key, etc.).
-
Restricted: if data access (read and/or write) is restricted to specific users (e.g.: a
validatedstatus to be set by an admin only). -
Ownership: defines the identity of the entity owner(s) (e.g.: a bar with a field
creatorcontaining the user ID).
See also
For the complete structure of the data models, you can refer to this documentation.