RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 11. Определения CRUD EBNF

Эта глава предоставляет визуальный справочник по объектам и функциям, доступным в X DevAPI.

11.1. Объекты сессии и функции

Session

Синтаксис для этого объекта в EBNF:

Session
    ::= '.getSchema(' StringLiteral ')'
        | '.getSchemas()'
        | '.createSchema(' StringLiteral ')'
        | '.dropSchema(' StringLiteral ')'
        | '.getDefaultSchema()'
        | '.startTransaction()'
        | '.commit()'
        | '.rollback()'
        | '.setSavepoint()'
        | '.setSavepoint(' StringLiteral ')'
        | '.releaseSavePoint(' StringLiteral ')'
        | '.rollbackTo(' StringLiteral ')'
        | '.close()'
        | SqlExecute

Рис. 11.1. Session

Content shows the syntax in EBNF form as described in the preceding text.

SqlExecute

Синтаксис для этой функции в EBNF:

SqlExecute
    ::= '.sql(' SqlStatementStr ')'
        ( '.bind(' Literal (',' Literal)* ')')*
        ( '.execute()' )?

Рис. 11.2. SqlExecute

Content shows the syntax in EBNF form as described in the preceding text.

SQLPlaceholderValues

Синтаксис для этой функции в EBNF:

SQLPlaceholderValues
  ::= '{' SQLPlaceholderName ':' ( SQLLiteral ) '}'

Рис. 11.3. SQLPlaceholderValues

Content shows the syntax in EBNF form as described in the preceding text.

SQLPlaceholderName

Синтаксис для этой функции в EBNF:

SQLPlaceholderName
  ::= '?'

Рис. 11.4. SQLPlaceholderName

Content shows the syntax in EBNF form as described in the preceding text.

SQLLiteral

Синтаксис для этой функции в EBNF:

SQLLiteral
  ::= '"' StringLiteral '"' | Number | Document

Рис. 11.5. SQLLiteral

Content shows the syntax in EBNF form as described in the preceding text.

11.2. Объекты схемы и функции

Schema

Синтаксис для этой функции в EBNF:

Schema
    ::= '.getName()'
        | '.existsInDatabase()'
        | '.getSession()'
        | '.getCollection(' StringLiteral ')'
        | '.getCollections()'
        | '.getCollectionAsTable(' StringLiteral ')'
        | '.dropCollection(' StringLiteral ')'
        | '.getTable(' StringLiteral ')'
        | '.getTables()'
        | '.createCollection(' StringLiteral ')'

Рис. 11.6. Schema

Content shows the syntax in EBNF form as described in the preceding text.

Collection

Синтаксис для этой функции в EBNF:

Collection
    ::= '.getSchema()'
        | '.getName()'
        | '.getSession()'
        | '.existsInDatabase()'
        | '.replaceOne(' DocumentId ',' DocumentOrJSON  ')'
        | '.addOrReplaceOne(' DocumentId ',' DocumentOrJSON  ')'
        | '.getOne(' DocumentId ')'
        | '.removeOne(' DocumentId ')'
        | CollectionFindFunction
        | CollectionModifyFunction
        | CollectionAddFunction
        | CollectionRemoveFunction
        | CollectionCreateIndex
        | CollectionDropIndex

Рис. 11.7. Collection

Content shows the syntax in EBNF form as described in the preceding text.

Table

Синтаксис для этой функции в EBNF:

Table
    ::= '.getSchema()'
        | '.getName()'
        | '.getSession()'
        | '.existsInDatabase()'
        | '.isView()'
        | TableSelectFunction
        | TableUpdateFunction
        | TableInsertFunction
        | TableDeleteFunction

Рис. 11.8. Table

Content shows the syntax in EBNF form as described in the preceding text.

11.3. Функции CRUD для коллекций

CollectionFindFunction

Синтаксис для этой функции в EBNF:

CollectionFindFunction
  ::= '.find(' SearchConditionStr? ')' ( '.fields(' ProjectedDocumentExprStr ')' )?
      ( '.groupBy(' SearchExprStrList ')' )? ( '.having(' SearchConditionStr ')' )?
      ( '.sort(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' ( '.offset(' NumberOfRows ')' )? )?
      ( '.lockExclusive(' LockContention ')' | '.lockShared(' LockContention ')' )?
      ( '.bind(' PlaceholderValues ')' )*
      ( '.execute()' )?

Рис. 11.9. CollectionFindFunction

Content is described in the surrounding text.

CollectionModifyFunction

Синтаксис для этой функции в EBNF:

CollectionModifyFunction
  ::= '.modify(' SearchConditionStr ')'
      ( '.set(' CollectionField ',' ExprOrLiteral ')' |
        '.unset(' CollectionFields ')' |
        '.arrayInsert(' CollectionField ',' ExprOrLiteral ')' |
        '.arrayAppend(' CollectionField ',' ExprOrLiteral ')' |
        '.arrayDelete(' CollectionField ')' |
        '.patch(' DocumentOrJSON ')'
      )+
      ( '.sort(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
      ( '.bind(' PlaceholderValues ')' )*
      ( '.execute()' )?

Рис. 11.10. CollectionModifyFunction

Content shows the syntax in EBNF form as described in the preceding text.

CollectionAddFunction

Синтаксис для этой функции в EBNF:

CollectionAddFunction
    ::= ( '.add(' ( DocumentOrJSON | '[' DocumentOrJSON ( ',' DocumentOrJSON )* ']' )? ')' )+
        ( '.execute()' )?

Рис. 11.11. CollectionAddFunction

Content is described in the surrounding text.

CollectionRemoveFunction

Синтаксис для этой функции в EBNF:

CollectionRemoveFunction
    ::= '.remove(' SearchConditionStr ')'
        ( '.sort(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
        ( '.bind(' PlaceholderValues ')' )*
        ( '.execute()' )?

Рис. 11.12. CollectionRemoveFunction

Content shows the syntax in EBNF form as described in the preceding text.

11.4. Функции управления индексом коллекции

Collection.createIndex() Function

Синтаксис для этой функции в EBNF:

CollectionCreateIndex
    ::= '.createIndex(' StringLiteral ',' DocumentOrJSON ')'

Рис. 11.13. CollectionCreateIndexFunction

Content shows the syntax in EBNF form as described in the preceding text.

CollectionDropIndex

Синтаксис для этой функции в EBNF:

CollectionDropIndex
    ::= '.dropIndex(' StringLiteral ')'

Рис. 11.14. CollectionDropIndex

Content shows the syntax in EBNF form as described in the preceding text.

11.5. Функции Table CRUD

TableSelectFunction

Table.select() и collection.find() используют различные методы для сортировки результатов. Table.select() следует за языковым обозначением SQL и вызывает метод сортировки orderBy(). Collection.find() так не делает. Используйте метод sort(), чтобы сортировать результаты, возвращенные Collection.find(). Близость со стандартом SQL считают более важной, чем однородность API.

Синтаксис для этой функции в EBNF:

TableSelectFunction
  ::= '.select(' ProjectedSearchExprStrList? ')' ( '.where(' SearchConditionStr ')' )?
      ( '.groupBy(' SearchExprStrList ')' )? ( '.having(' SearchConditionStr ')' )?
      ( '.orderBy(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' ( '.offset(' NumberOfRows ')' )? )?
      ( '.lockExclusive(' LockContention ')' | '.lockShared(' LockContention ')' )?
      ( '.bind(' ( PlaceholderValues ) ')' )*
      ( '.execute()' )?

Рис. 11.15. TableSelectFunction

Content shows the syntax in EBNF form as described in the preceding text.

TableInsertFunction

Синтаксис для этой функции в EBNF:

TableInsertFunction
  ::= '.insert(' ( TableFields )? ')'
        ( '.values(' Literal (',' Literal)* ')' )+
        ( '.execute()' )?

Рис. 11.16. TableInsertFunction

Content shows the syntax in EBNF form as described in the preceding text.

TableUpdateFunction

Синтаксис для этой функции в EBNF:

TableUpdateFunction
  ::= '.update()'
      ( '.set(' TableField ',' ExprOrLiteral ')' )+ '.where(' SearchConditionStr ')'
      ( '.orderBy(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
      ( '.bind(' ( PlaceholderValues ) ')' )*
      ( '.execute()' )?

Рис. 11.17. TableUpdateFunction

Content shows the syntax in EBNF form as described in the preceding text.

TableDeleteFunction

Синтаксис для этой функции в EBNF:

TableDeleteFunction
  ::= '.delete()' '.where(' SearchConditionStr ')'
      ( '.orderBy(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
      ( '.bind(' ( PlaceholderValues ) ')' )*
      ( '.execute()' )?

Рис. 11.18. TableDeleteFunction

Content shows the syntax in EBNF form as described in the preceding text.

11.6. Функции Result

Result

Синтаксис для этой функции в EBNF:

Result
    ::= '.getAffectedItemsCount()'
        | '.getAutoIncrementValue()'
        | '.getGeneratedIds()'
        | '.getWarningCount()'
        | '.getWarnings()'

Рис. 11.19. Result

Content shows the syntax in EBNF form as described in the preceding text.

DocResult

Синтаксис для этой функции в EBNF:

DocResult
    ::= '.getWarningCount()'
        | '.getWarnings()'
        | '.fetchAll()'
        | '.fetchOne()'

Рис. 11.20. DocResult

Content shows the syntax in EBNF form as described in the preceding text.

RowResult

Синтаксис для этой функции в EBNF:

RowResult
    ::= '.getWarningCount()'
        | '.getWarnings()'
        | '.fetchAll()'
        | '.fetchOne()'
        | '.getColumns()'

Рис. 11.21. RowResult

Content shows the syntax in EBNF form as described in the preceding text.

Column

Синтаксис для этой функции в EBNF:

Column
    ::= '.getSchemaName()'
        | '.getTableName()'
        | '.getTableLabel()'
        | '.getColumnName()'
        | '.getColumnLabel()'
        | '.getType()'
        | '.getLength()'
        | '.getFractionalDigits()'
        | '.isNumberSigned()'
        | '.getCollationName()'
        | '.getCharacterSetName()'
        | '.isPadded()'

Рис. 11.22. Column

Content shows the syntax in EBNF form as described in the preceding text.

SqlResult

Синтаксис для этой функции в EBNF:

SqlResult
    ::= '.getWarningCount()'
        | '.getWarnings()'
        | '.fetchAll()'
        | '.fetchOne()'
        | '.getColumns()'
        | '.getAutoIncrementValue()'
        | '.hasData()'
        | '.nextResult()'

Рис. 11.23. SqlResult

Content shows the syntax in EBNF form as described in the preceding text.

11.7. Другие определения EBNF

SearchConditionStr

Синтаксис для этой функции в EBNF:

SearchConditionStr
  ::= '"' Expression '"'

Рис. 11.24. SearchConditionStr

Content shows the syntax in EBNF form as described in the preceding text.

SearchExprStrList

Синтаксис для этой функции в EBNF:

SearchExprStrList
  ::= '[' '"' Expression '"' ( ',' '"' Expression '"' )* ']'

Рис. 11.25. SearchExprStrList

Content shows the syntax in EBNF form as described in the preceding text.

ProjectedDocumentExprStr

Синтаксис для этой функции в EBNF:

ProjectedDocumentExprStr
  ::= ProjectedSearchExprStrList | 'expr("' JSONDocumentExpression '")'

Рис. 11.26. ProjectedDocumentExprStr

Content shows the syntax in EBNF form as described in the preceding text.

ProjectedSearchExprStrList

Синтаксис для этой функции в EBNF:

ProjectedSearchExprStrList
  ::= '[' '"' Expression ( 'AS' Alias )? '"' ( ',' '"' Expression ( 'AS' Alias )? '"' )* ']'

Рис. 11.27. ProjectedSearchExprStrList

Content shows the syntax in EBNF form as described in the preceding text.

SortExprStrList

Синтаксис для этой функции в EBNF:

SortExprStrList
  ::= '[' '"' Expression ( 'ASC' | 'DESC' )? '"' ( ',' '"' Expression ( 'ASC' | 'DESC' )? '"' )* ']'

Рис. 11.28. SortExprStrList

Content shows the syntax in EBNF form as described in the preceding text.

ExprOrLiteral

Синтаксис для этой функции в EBNF:

ExprOrLiteral
  ::= 'expr("' Expression '")' | Literal

Рис. 11.29. ExprOrLiteral

Content shows the syntax in EBNF form as described in the preceding text.

ExprOrLiterals

Синтаксис для этой функции в EBNF:

ExprOrLiterals
  ::= ExprOrLiteral ( ',' ExprOrLiteral )*

Рис. 11.30. ExprOrLiterals

Content shows the syntax in EBNF form as described in the preceding text.

ExprOrLiteralOrOperand

Синтаксис для этой функции в EBNF:

ExprOrLiteralOrOperand
  ::= ExprOrLiteral

Рис. 11.31. ExprOrLiteralOrOperand

Content shows the syntax in EBNF form as described in the preceding text.

PlaceholderValues

Синтаксис для этой функции в EBNF:

PlaceholderValues
  ::= '{' PlaceholderName ':' ( ExprOrLiteral ) '}'

Рис. 11.32. PlaceholderValues

Content shows the syntax in EBNF form as described in the preceding text.

PlaceholderName

Синтаксис для этой функции в EBNF:

PlaceholderName
  ::= NamedPlaceholderNotQuestionmarkNotNumbered

Рис. 11.33. PlaceholderName

Content shows the syntax in EBNF form as described in the preceding text.

CollectionFields

Синтаксис для этой функции в EBNF:

CollectionFields
  ::= ( '[' CollectionField ( ',' CollectionField )* ']' )

Рис. 11.34. CollectionFields

Content shows the syntax in EBNF form as described in the preceding text.

CollectionField

Синтаксис для этой функции в EBNF:

CollectionField
  ::= '@'? DocPath

Рис. 11.35. CollectionField

Content shows the syntax in EBNF form as described in the preceding text.

DocPath

Синтаксис для этой функции в EBNF:

DocPath
  ::= ( '[*]' | ( '[' Index ']' ) | '.*' | ( '.' StringLiteral ) | '**' )+

Рис. 11.36. DocPath

Content shows the syntax in EBNF form as described in the preceding text.

Literal

Синтаксис для этой функции в EBNF:

Literal
  ::= '"' StringLiteral '"' | Number | true | false | Document

Рис. 11.37. Literal

Content shows the syntax in EBNF form as described in the preceding text.

Выражения

Рис. 11.38. Expression

Content is described in the surrounding text.

Document

Вызов API, ожидающий документ JSON, позволяет использование многих типов данных, чтобы описывать документ. В зависимости от реализации X DevAPI и языка может использоваться любой из следующих типов данных:

  • String

  • Native JSON

  • Эквивалентный синтаксис JSON

  • DbDoc

  • Generated Doc Classes

Все реализации X DevAPI позволяют выражать документ специальным типом DbDoc и как последовательность.

Синтаксис для этой функции в EBNF:

Document
  ::= JSONDocument | JSONEquivalentDocument | DbDoc | GeneratedDocumentClasses

Рис. 11.39. Document

Content shows the syntax in EBNF form as described in the preceding text.

JSONExpression

Синтаксис для этой функции в EBNF:

JSONExpression
  ::= JSONDocumentExpression | '[' Expression ( ',' Expression )* ']'

Рис. 11.40. JSONExpression

Content shows the syntax in EBNF form as described in the preceding text.

JSONDocumentExpression

Синтаксис для этой функции в EBNF:

JSONDocumentExpression
  ::= '{' StringLiteral ':' JSONExpression (',' StringLiteral ':' JSONExpression)* '}'

Рис. 11.41. JSONDocumentExpression

Content shows the syntax in EBNF form as described in the preceding text.

FunctionName

Синтаксис для этой функции в EBNF:

FunctionName
  ::= StringLiteral | StringLiteral '.' StringLiteral

Рис. 11.42. FunctionName

Content shows the syntax in EBNF form as described in the preceding text.

DocumentOrJSON

Синтаксис для этой функции в EBNF:

DocumentOrJSON
  ::= Document | 'expr("' JSONDocumentExpression '")'

Рис. 11.43. DocumentOrJSON

Content shows the syntax in EBNF form as described in
the preceding text.

TableField

Синтаксис для этой функции в EBNF:

TableField
  ::= ( StringLiteral '.' )? ( StringLiteral '.' )? StringLiteral ( '@' DocPath )?

Рис. 11.44. TableField

Content shows the syntax in EBNF form as described in the preceding text.

TableFields

Синтаксис для этой функции в EBNF:

TableFields
  ::= ( '[' TableField ( ',' TableField )* ']' )

Рис. 11.45. TableFields

Content shows the syntax in EBNF form as described in the preceding text.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru