database
relational-database-bridge grammar version 101
model | 105 | application |
---|---|---|
interface | 20 | interface |
auto-webclient | xindi.1 | generator_settings |
generator_annotations | ||
phrases | ||
query | ||
translations | ||
parameters | ||
connector | 36.5 | processor |
variables | ||
datastore | 113 | consumed_interfaces_mapping |
provided_interface_implementation | ||
migration_mapping | ||
regular_expression_engine | ||
relational-database-bridge | 109 | database |
database_transformation | ||
sql-mirror | 109.1 | sql_mapping |
webclient | xindi.1.1 | views |
widget | ||
client bindings | ||
gui_model | ||
phrases | ||
translations | ||
settings | ||
parameters | ||
project-build-environment | 41 | wiring |
deployment |
'tables': dictionary @order: .'dependency graph' { @section
'source': [ : table = ] group {
'scoped': stategroup (
'yes' {
'namespace': text
'selection': component 'table selector'
}
'no' { }
)
'source': text
'inline tables': stategroup (
'yes' { [ inline-tables (experimental) ]
'sub tables': dictionary { @block indent
'fields': [ fields ] dictionary { @block indent
'definition': component 'field'
}
'join key': [ join ] dictionary { @block indent
'contra field': [ == ] reference
}
}
}
'no' { }
)
}
'fields': @block indent [ fields ] dictionary { @block indent
'source': [ = ] stategroup (
'reference' {
'field': text
'definition': component 'field'
}
'inline reference' { [ inline ]
'inline table': reference
'inline field': [ . ] reference
}
)
}
'has primary key': stategroup (
'yes' { @block indent [ primary-key ]
'primary key': dictionary { @block indent }
}
'no' { }
)
'unique indices': dictionary { @block indent [ unique-index ]
'fields': [ (, ) ] dictionary { @block indent }
}
'foreign keys': @block indent [ foreign-keys ] dictionary { @block indent
'table': [ => table ] reference
'on': @block indent [ where ] stategroup (
'primary key' { [ primary-key ]
'key fields': [ (, ) ] dictionary { @block indent
'contra field': [ == ] reference
}
}
'unique index' { [ unique-index ]
'index': reference
'key fields': [ (, ) ] dictionary { @block indent
'contra field': [ == ] reference
}
}
)
}
'text encoding': stategroup (
'ascii' { }
'utf8' { @block indent [ text-encoding : utf8 ] }
)
'prefilters': group {
'join statements': dictionary { @block indent [ join ] }
'has where clause': stategroup (
'yes' { @block indent [ where ]
'where statement': component 'filter statement list'
}
'no' { }
)
}
}
'field' {
'data type': [ as ] stategroup (
'text' { [ text ]
'import rule': stategroup (
'fixed length' { [ (, ) ]
'rule: trim': stategroup (
'both' { [ trim-both ] }
'left' { [ trim-left ] }
'right' { [ trim-right ] }
'none' { }
)
'length': integer
}
'no' { }
)
}
'floating point' { [ float ] }
'decimal' { [ decimal ]
'rounding': stategroup (
'ordinary' { }
'ceil' { [ ceil ] }
'floor' { [ floor ] }
)
'scale': [ (, ) ] integer
}
'integer' { [ integer ] }
'boolean' { [ bool ] }
'enum' { [ enum ]
'values': [ (, ) ] dictionary { }
}
)
'nullable': stategroup (
'yes' { [ (nullable) ] }
'no' { }
)
'has description': stategroup (
'yes' {
'description': [ </, /> ] text
}
'no' { }
)
}
'table selector' {
'has step': stategroup (
'yes' {
'name': [ . ] text
'tail': component 'table selector'
}
'no' { }
)
}
'number list' {
'step type': stategroup (
'single value' {
'value': integer
}
'range' {
'begin value': integer
'end value': [ ... ] integer
}
)
'has more steps': stategroup (
'yes' {
'tail': component 'number list'
}
'no' { }
)
}
'filter statement' {
'type': stategroup (
'contains' {
'field': [ . ] reference
'comparison': stategroup (
'in' { [ in ]
'arguments': [ (, ) ] dictionary { }
}
'not in' { [ not in ]
'arguments': [ (, ) ] dictionary { }
}
)
}
'search' {
'field': [ . ] reference
'type': stategroup (
'starts with' { [ starts-with ] }
'contains' { [ contains ] }
'equals' { [ equals ] }
)
'substring': text
}
'compare' {
'field': [ . ] reference
'operator': stategroup (
'smaller' { [ < ] }
'greater' { [ > ] }
'equal' { [ == ] }
'not equal' { [ != ] }
)
'right': stategroup (
'property' {
'right': [ . ] reference
}
'static number' {
'value': integer
}
'static text' {
'value': text
}
'time span' {
'days': [ current-date - ] integer
}
)
}
'in list' {
'field': [ . ] reference
'number list': [ (, ) ] component 'number list'
}
'foreign key' { [ foreign-key ]
'foreign key': reference
}
'incoming foreign key' { [ this ]
'source table': [ in table ] reference
'incoming link': [ >> ] reference
}
'invert' { [ not ]
'statement': component 'filter statement'
}
'list' { [ (, ) ]
'statements': @block indent component 'filter statement list'
}
)
}
'filter statement list' {
'statement': component 'filter statement'
'has more statements': stategroup (
'yes' {
'operator': stategroup (
'and' { [ and ] }
'or' { [ or ] }
)
'tail': @block component 'filter statement list'
}
'no' { }
)
}