Light
Dark
System
v4latest
v4latest
v3
v2
v1

Annotations

Annotations are named values associated with schema items and are designed to hold arbitrary schema-level metadata represented as a str.

There are a number of annotations defined in the standard library. The following are the annotations which can be set on any schema item:

  • title

  • description

  • deprecated

For example, consider the following declaration:

Copy
type Status {
    annotation title := 'Activity status';
    annotation description := 'All possible user activities';

    required name: str {
        constraint exclusive
    }
}

The deprecated annotation is used to mark deprecated items (e.g. str_rpad()) and to provide some information such as what should be used instead.

To declare a custom annotation type beyond the three built-ins, add an abstract annotation type to your schema. A custom annotation could be used to attach arbitrary JSON-encoded data to your schema—potentially useful for introspection and code generation.

Copy
abstract annotation admin_note;

type Status {
  annotation admin_note := 'system-critical';
}
Light
Dark
System

We use ChatGPT with additional context from our documentation to answer your questions. Not all answers will be accurate. Please join our Discord if you need more help.