Objet modèle
Ce document décrit la structure de l'objet qui représente un modèle de données lors de l'écriture d'un template.
Avant de lire ce document, vous devriez jeter un coup d'œil à la section concepts.
Dans les templates
Injection du modèle de données
L'entrée du template peut être définie comme one model
ou all models
.
Au cours de la génération, s'il est défini comme one model
, le template sera appelé une fois pour chaque modèle de données. Par conséquent, il engendrera un fichier pour chaque modèle de données.
S'il est défini comme all models
, le template sera appelé une seule fois pour tous les modèles de données. Il engendrera alors un unique fichier.
Modèle unique
Si le template ne nécessite qu'un seul modèle, alors un objet model
(alias m
) sera disponible comme variable globale dans le template.
Dans un template Hapify, il sera disponible sous Model
, M
ou encore root
.
Dans un template EJS ou JavaScript, il sera disponible sous model
ou m
.
Plusieurs modèles
Si le template nécessite tous les modèles, un tableau models
(alias m
) sera disponible comme variable globale dans le template.
Ce tableau contient tous les modèles disponibles.
Dans un template Hapify, il sera disponible sous Models
, M
ou encore root
.
Dans un template EJS ou JavaScript, il sera disponible sous models
ou m
.
Structure de l'objet modèle
Les objets suivants seront disponibles dans le template.
Objet modèle
id
(string): un ID uniquename
(string): le nom du modèle, tel que l'utilisateur l'a saisi.names
(object): variantes calculées à partir de la propriéténame
.raw
(string): tel que l'utilisateur l'a saisi. ExempleOnline item
.kebab
(string): exempleonline-item
.big
(string): exempleONLINE-ITEM
.header
(string): exempleOnline-Item
.snake
(string): exempleonline_item
.constant
(string): exempleONLINE_ITEM
.compact
(string): exempleonlineitem
.camel
(string): exempleonlineItem
.pascal
(string): exempleOnlineItem
.lower
(string): exempleonline item
.capital
(string): exempleOnline Item
.
notes
(string): le commentaire du modèle, tel que l'utilisateur l'a saisi.hasNotes
(boolean): le modèle a un commentaire.fields
- aliasf
(object): un objet contenant tous les champs, regroupés dans différents tableaux. Voir la section Objet de champ pour en savoir plus sur la structure d'un champ.list
- aliasl
(array): contenant tous les champs du modèle.primary
- aliaspr
(Field): champ primaire du modèle.null
si aucun champ primaire n'est défini.unique
- aliasun
(array): les champs marqués commeunique
.label
- aliaslb
(array): les champs marqués commelabel
.nullable
- aliasnu
(array): les champs marqués commenullable
.multiple
- aliasml
(array): les champs marqués commemultiple
.embedded
- aliasem
(array): les champs marqués commeembedded
.searchable
- aliasse
(array): les champs marqués commesearchable
.sortable
- aliasso
(array): les champs marqués commesortable
.hidden
- aliashd
(array): les champs marqués commehidden
.internal
- aliasin
(array): les champs marqués commeinternal
.restricted
- aliasrs
(array): les champs marqués commerestricted
.ownership
- aliasos
(array): les champs marqués commeownership
.searchableLabel
- aliassl
(array): les champs marqués commelabel
etsearchable
. Utile pour une recherche rapide par label.filter
- aliasf
(function): filtrer les champs avec une règle personnalisée. Équivalent demodel.fields.list.filter
.references
- aliasr
- modèle non profond uniquement (array): champs de typeentity
.filter
- aliasf
(function): filtre le tableau.
dependencies
- aliasd
- modèle non profond uniquement (object): les dépendances de ce modèle (vers d'autres modèles). Un modèle a une dépendance si l'un de ces champs est de typeentity
.list
- aliasl
(array): modèles de données dépendants, sauf auto-dépendance. Ces modèles sont ajoutés en tant que "modèles profonds".self
- aliass
(boolean): ce modèle de données a une auto-dépendance.filter
- aliasf
(function): filtre les dépendances.- Premier argument (function - défaut
(f) => f
): fonction de filtrage recevant le champ du référent (le champ de typeentity
). - Second argument (boolean - défaut
true
): booléen indiquant si il faut exclure l'auto-dépendance.
- Premier argument (function - défaut
referencedIn
- aliasri
- modèle non profond uniquement (array): modèles qui font référence à celui-ci. Ces modèles sont ajoutés en tant que "modèles profonds". Ces modèles ne contiennent que des champs de typeentity
faisant référence au modèle courant.filter
- aliasf
(function): filtre le tableau.
properties
- aliasp
(object): les propriétés pré-calculées à partir des champs.fieldsCount
(number): le nombre de champs contenus dans le modèle.hasPrimary
(boolean): a un champ primaire.hasUnique
(boolean): a au moins un champ unique.hasLabel
(boolean): a au moins un champ label.hasNullable
(boolean): a au moins un champ nullable.hasMultiple
(boolean): a au moins un champ multiple.hasEmbedded
(boolean): a au moins un champ embarqué.hasSearchable
(boolean): a au moins un champ recherchable.hasSortable
(boolean): a au moins un champ triable.hasHidden
(boolean): a au moins un champ caché.hasInternal
(boolean): a au moins un champ interne.hasRestricted
(boolean): a au moins un champ restreint.hasOwnership
(boolean): a au moins un champ de propriété.hasSearchableLabel
(boolean): le modèle a au moins un champ marqué comme label et également recherchable.hasDependencies
- modèle non profond uniquement (boolean): le modèle a des dépendances avec d'autres modèles ou avec lui-même (par le biais d'un champentity
).isReferenced
- modèle non profond uniquement (boolean): est référencé par d'autres modèles.mainlyHidden
(boolean): la majorité des champs sont cachés (strictement).mainlyInternal
(boolean): la majorité des champs sont internes (strictement).isGeolocated
(boolean): contient au moins un champ latitude et un champ longitude.isGeoSearchable
(boolean): contient au moins un champ latitude recherchable et un champ longitude recherchable.
accesses
- aliasa
(object): les accès au modèle regroupés par action ou restriction. Voir la section Objet d'accès pour en savoir plus sur la structure des accès.list
- aliasl
(array): tous les accès au modèle.admin
- aliasad
(array): les accès limités àadmin
.owner
- aliasow
(array): les accès limités àowner
.auth
- aliasau
(array): les accès limités àauthenticated
.guest
- aliasgs
(array): les accès limités àguest
.create
- aliasc
(object): l'accès à l'actioncreate
.read
- aliasr
(object): l'accès à l'actionread
.update
- aliasu
(object): l'accès à l'actionupdate
.remove
- aliasd
(object): l'accès à l'actiondelete
.search
- aliass
(object): l'accès à l'actionsearch
.count
- aliasn
(object): l'accès à l'actioncount
.filter
- aliasf
(Function): filtrer les accès avec une règle personnalisée. Équivalent demodel.accesses.list.filter
.properties
- aliasp
(object): propriétés pré-calculées à partir des accès.onlyAdmin
(boolean): ne contient que des accès limités àadmin
.onlyOwner
(boolean): ne contient que des accès limités àowner
.onlyAuth
(boolean): ne contient que des accès limités àauthenticated
.onlyGuest
(boolean): ne contient que des accès limités àguest
.maxAdmin
(boolean): l'accès le plus permissif estadmin
.maxOwner
(boolean): l'accès le plus permissif estowner
.maxAuth
(boolean): l'accès le plus permissif estauthenticated
.maxGuest
(boolean): l'accès le plus permissif estguest
.noAdmin
(boolean): il n'y a pas d'accès limité àadmin
.noOwner
(boolean): il n'y a pas d'accès limité àowner
.noAuth
(boolean): il n'y a pas d'accès limité àauthenticated
.noGuest
(boolean): il n'y a pas d'accès limité àguest
.hasAdmin
(boolean): il existe au moins un accès restreint àadmin
.hasOwner
(boolean): il existe au moins un accès restreint àowner
.hasAuth
(boolean): il existe au moins un accès restreint àauthenticated
.hasGuest
(boolean): il existe au moins un accès restreint àguest
.
Objet de champ
name
(string): le nom du champ, tel que l'utilisateur l'a saisi.names
(object): variantes calculées à partir de la propriéténame
.raw
(string): tel que l'utilisateur l'a saisi. Exemplefirst_name
.kebab
(string): exemplefirst-name
.big
(string): exempleFIRST-NAME
.header
(string): exempleFirst-Name
.snake
(string): exemplefirst_name
.constant
(string): exempleFIRST_NAME
.compact
(string): exemplefirstname
.camel
(string): exemplefirstName
.pascal
(string): exempleFirstName
.lower
(string): exemplefirst name
.upper
(string): exempleFIRST NAME
.capital
(string): exempleFirst Name
.
notes
(string): le commentaire du champ, tel que l'utilisateur l'a saisi.hasNotes
(boolean): le champ a un commentaire.primary
(boolean): est marqué commeprimary
.unique
(boolean): est marqué commeunique
.label
(boolean): est marqué commelabel
.nullable
(boolean): est marqué commenullable
.multiple
(boolean): est marqué commemultiple
.embedded
(boolean): est marqué commeembedded
.searchable
(boolean): est marqué commesearchable
.sortable
(boolean): est marqué commesortable
.hidden
(boolean): est marqué commehidden
.internal
(boolean): est marqué commeinternal
.restricted
(boolean): est marqué commerestricted
.ownership
(boolean): est marqué commeownership
.type
(string): type du champ. Peut-êtrestring
,number
,boolean
,datetime
,entity
,object
oufile
.subtype
(string): sous-type du champ. Les valeurs disponibles dépendent dutype
:string
: Peut-êtrenull
,email
,password
,url
,text
ourich
.number
: Peut-êtrenull
,integer
,float
,latitude
oulongitude
.boolean
: Estnull
.datetime
: Peut-êtrenull
,date
outime
.entity
: Estnull
.object
: Estnull
.file
: Peut-êtrenull
,image
,video
,audio
oudocument
.
model
- aliasm
(object): objet modèle cible si le champ est de typeentity
.null
sinon.enum
- aliase
(array): un tableau contenant tous les enum si le champ est de typeenum
.null
sinon. Voir la section Objet enum pour en savoir plus sur la structure d'un enum.value
(string|string[]):- Si le type est
entity
: ID brut du modèle cible (string). - Si le type est
enum
: liste brute d'enum (string[]). - Sinon
null
.
- Si le type est
Objet enum
name
(string): nom de l'enum, tel que l'utilisateur l'a saisi.names
(object): variantes calculées à partir de la propriéténame
.raw
(string): tel que l'utilisateur l'a saisi. Exemplefirst_name
.kebab
(string): exemplefirst-name
.big
(string): exempleFIRST-NAME
.header
(string): exempleFirst-Name
.snake
(string): exemplefirst_name
.constant
(string): exempleFIRST_NAME
.compact
(string): exemplefirstname
.camel
(string): exemplefirstName
.pascal
(string): exempleFirstName
.lower
(string): exemplefirst name
.upper
(string): exempleFIRST NAME
.capital
(string): exempleFirst Name
.
Objet d'accès
action
(string): nom de l'action. Peut-êtrecreate
,read
,update
,remove
,search
oucount
.admin
(boolean): l'accès estadmin
.owner
(boolean): l'accès estowner
.auth
(boolean): l'accès estauthenticated
.guest
(boolean): l'accès estguest
.gteAdmin
(boolean): l'accès est supérieur ou égal àadmin
(toujourstrue
).gteOwner
(boolean): l'accès est supérieur ou égal àowner
.gteAuth
(boolean): l'accès est supérieur ou égal àauthenticated
.gteGuest
(boolean): l'accès est supérieur ou égal àguest
.lteAdmin
(boolean): l'accès est inférieur ou égal àadmin
.lteOwner
(boolean): l'accès est inférieur ou égal àowner
.lteAuth
(boolean): l'accès est inférieur ou égal àauthenticated
.lteGuest
(boolean): l'accès est inférieur ou égal àguest
(toujourstrue
).