Constraints​

This section describes introspection of constraints.

Introspection of the schema::Constraint:


1. with module schema
2. select ObjectType {
3. name,
4. links: {
5. name,
6. },
7. properties: {
8. name,
9. }
10. }
11. filter .name = 'schema::Constraint';


1. {
2. Object {
3. name: 'schema::Constraint',
4. links: {
5. Object { name: '__type__' },
6. Object { name: 'args' },
7. Object { name: 'annotations' },
8. Object { name: 'bases' },
9. Object { name: 'ancestors' },
10. Object { name: 'params' },
11. Object { name: 'return_type' },
12. Object { name: 'subject' }
13. },
14. properties: {
15. Object { name: 'errmessage' },
16. Object { name: 'expr' },
17. Object { name: 'finalexpr' },
18. Object { name: 'id' },
19. Object { name: 'abstract' },
20. Object { name: 'name' },
21. Object { name: 'return_typemod' },
22. Object { name: 'subjectexpr' }
23. }
24. }
25. }

Consider the following schema:


1. scalar type maxex_100 extending int64 {
2. constraint max_ex_value(100);
3. }

Introspection of the scalar maxex_100 with focus on the constraint:


1. with module schema
2. select ScalarType {
3. name,
4. constraints: {
5. name,
6. expr,
7. annotations: { name, @value },
8. subject: { name },
9. params: { name, @value, type: { name } },
10. return_typemod,
11. return_type: { name },
12. errmessage,
13. },
14. }
15. filter .name = 'default::maxex_100';


1. {
2. Object {
3. name: 'default::maxex_100',
4. constraints: {
5. Object {
6. name: 'std::max_ex_value',
7. expr: '(__subject__ <= max)',
8. annotations: {},
9. subject: Object { name: 'default::maxex_100' },
10. params: {
11. Object {
12. name: 'max',
13. type: Object { name: 'anytype' },
14. @value: '100'
15. }
16. },
17. return_typemod: 'SingletonType',
18. return_type: Object { name: 'std::bool' }
19. errmessage: '{__subject__} must be less ...',
20. }
21. }
22. }
23. }

See also
Schema > Constraints
SDL > Constraints
DDL > Constraints
Standard Library > Constraints