Data modeling

Syntax

Definition ::= "entity" QId "{" EntityBodyDef* "}"
EntityBodyDef ::= ID ":" Type ("(" {Anno ","}* ")")?
                | "static" "function" ID "(" {FArg ","}* ")" (":" Type")? "{" Statement* "}"
                | "function" ID "(" {FArg ","}* ")" (":" Type")? "{" Statement* "}"
Anno ::= "inverse:" ID
       | "searchable"
FArg ::= ID ":" Type
       | ID ":" Type "=" Exp

Example:

entity Category {
  name     : String
  tasks    : Collection<Task> (inverse: category)
}
entity Task {
  name     : String           (searchable)
  done     : Bool
  date     : DateTime
  category : Category         (inverse: tasks)
  tags     : Collection<Tag>  (inverse: tasks)
}
entity Tag {
  name     : String
  tasks    : Collection<Task> (inverse: tags)
}
language/entity.txt · Last modified: 2020/03/22 15:30 by Zef Hemel