couchset 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/automate/index.d.ts +4 -0
- package/dist/automate/middlewares/index.d.ts +1 -0
- package/dist/automate/middlewares/isAuth.d.ts +7 -0
- package/dist/automate/middlewares/isAuth.js.map +1 -1
- package/dist/automate/model/client.d.ts +12 -0
- package/dist/automate/model/client.js +1 -1
- package/dist/automate/model/client.js.map +1 -1
- package/dist/automate/model/index.d.ts +44 -0
- package/dist/automate/model/index.js +1 -1
- package/dist/automate/model/index.js.map +1 -1
- package/dist/automate/morpheus/index.d.ts +14 -0
- package/dist/automate/morpheus/index.js.map +1 -1
- package/dist/automate/writer/index.d.ts +10 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/connection.d.ts +36 -0
- package/dist/index.d.ts +14 -0
- package/dist/model/index.d.ts +107 -0
- package/dist/model/index.js.map +1 -1
- package/dist/pagination/index.d.ts +1 -0
- package/dist/pagination/pagination.d.ts +19 -0
- package/dist/query/base-query.d.ts +17 -0
- package/dist/query/exceptions.d.ts +24 -0
- package/dist/query/helpers/builders.d.ts +64 -0
- package/dist/query/helpers/builders.js +1 -1
- package/dist/query/helpers/builders.js.map +1 -1
- package/dist/query/helpers/dictionary.d.ts +45 -0
- package/dist/query/helpers/index.d.ts +3 -0
- package/dist/query/helpers/reservedWords.d.ts +1 -0
- package/dist/query/index.d.ts +5 -0
- package/dist/query/interface/query.types.d.ts +236 -0
- package/dist/query/query.cluster.d.ts +14 -0
- package/dist/query/query.cluster.js.map +1 -1
- package/dist/query/query.d.ts +321 -0
- package/dist/query/utils.d.ts +8 -0
- package/dist/search/customQuery.d.ts +17 -0
- package/dist/search/index.d.ts +1 -0
- package/dist/shared/ContextType.d.ts +27 -0
- package/dist/shared/ContextType.js.map +1 -1
- package/dist/shared/common.model.d.ts +37 -0
- package/dist/shared/common.model.js.map +1 -1
- package/dist/shared/index.d.ts +2 -0
- package/dist/utils/awaitTo.d.ts +17 -0
- package/dist/utils/date.d.ts +11 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/log.d.ts +9 -0
- package/dist/utils/text.utils.d.ts +14 -0
- package/dist/utils/utils.schema.d.ts +6 -0
- package/dist/uuid.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/query/helpers/builders.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CollectionExpressionType,\n CollectionInWithinOperator,\n CollectionInWithinOperatorType,\n CollectionInWithinOperatorValue,\n CollectionSelectOperator,\n ComparisonWhereExpr,\n IField,\n IGroupBy,\n IIndexOnParams,\n IIndexWithParams,\n ILetExpr,\n IndexType,\n ISelectAggType,\n ISelectType,\n LogicalWhereExpr,\n SortType,\n} from '../interface/query.types';\nimport {\n AggDict,\n CollectionInWithinOperatorDict,\n CollectionSatisfiesOperatorDict,\n CollectionSelectOperatorDict,\n ComparisonEmptyOperatorDict,\n ComparisonMultipleOperatorDict,\n ComparisonSingleOperatorDict,\n ComparisonSingleStringOperatorDict,\n LogicalOperatorDict,\n ResultExprDict,\n ReturnResultDict,\n} from './dictionary';\nimport {\n InWithinOperatorExceptions,\n QueryGroupByParamsException,\n QueryOperatorNotFoundException,\n SelectClauseException,\n WhereClauseException,\n} from '../exceptions';\nimport {escapeReservedWords} from '../utils';\n\n// select expressions functions\n/**\n * Build a SELECT N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/select-syntax.html}\n * @param collection Collection name\n * @param select SELECT Clause param\n * @param letExpr LET Clause param\n * @param where WHERE Clause param\n * @param orderBy ORDER BY Clause param\n * @param limit LIMIT Clause param\n * @param offset OFFSET Clause param\n * @param useExpr USE Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const selectBuilder = (\n collection: string,\n select: ISelectType[] | string,\n letExpr?: ILetExpr[],\n where?: LogicalWhereExpr,\n orderBy?: Record<string, SortType>,\n limit?: number,\n offset?: number,\n useExpr?: string[],\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr,\n plainJoinExpr?: string\n): string => {\n try {\n let expr = '';\n if (typeof select === 'string') {\n expr = select;\n }\n if (Array.isArray(select)) {\n expr = buildSelectArrayExpr(select);\n }\n const _collection =\n collection.indexOf(' ') !== -1\n ? `\\`${collection}`.replace(' ', '` ')\n : collection.indexOf('`') !== -1\n ? collection\n : `\\`${collection}\\``;\n return `SELECT ${expr} FROM ${_collection}${\n plainJoinExpr ? ` ${plainJoinExpr} ` : ''\n }${_buildUseKeysExpr(useExpr)}${_buildLetExpr(letExpr)}${buildWhereExpr(\n where\n )}${_buildGroupByExpr(groupByExpr, lettingExpr, havingExpr)}${_buildOrderByExpr(\n orderBy\n )}${_buildLimitExpr(limit)}${_buildOffsetExpr(offset)}`;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAS = (c: ISelectAggType | IField) => {\n return c.hasOwnProperty('as') ? ` AS ${c['as']}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildField = (clause: IField | string) => {\n if (clause.hasOwnProperty('name')) {\n return `${escapeReservedWords(clause['name'])}${_buildAS(clause as IField)}`;\n }\n return `${escapeReservedWords(clause as string)}`;\n};\n\n/**\n * Create N1QL queries from select array params\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectArrayExpr = (clause: ISelectType[]): string => {\n return `${clause.map((c) => buildSelectExpr('', c)).join(',')}`;\n};\n\n/**\n * Recursive function to create N1QL queries.\n * @param n1ql N1QL Query String\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectExpr = (n1ql: string, clause: ISelectType): string => {\n try {\n if (clause.hasOwnProperty('$field')) {\n return _buildField(clause['$field']);\n }\n const key = Object.keys(clause)[0];\n if (ReturnResultDict.hasOwnProperty(key)) {\n return `${ReturnResultDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (ResultExprDict.hasOwnProperty(key)) {\n return `${ResultExprDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (AggDict.hasOwnProperty(key)) {\n // todo check if have AS expr inside of Agg function.\n return `${AggDict[key]}(${_buildAggDictExpr(\n clause as ISelectAggType,\n key\n )}${buildSelectExpr(n1ql, clause[key])})${_buildAS(clause[key])}`;\n }\n throw new SelectClauseException();\n } catch {\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAggDictExpr = (clause: ISelectAggType, key: string) => {\n if (AggDict.hasOwnProperty(key)) {\n if (clause[key].hasOwnProperty('ro')) {\n return `${ReturnResultDict[clause[key]['ro']]} `;\n }\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLetExpr = (letExpr: ILetExpr[] | undefined, clause?: string) => {\n return Array.isArray(letExpr)\n ? ` ${clause ? clause : 'LET'} ${letExpr\n .map((value: ILetExpr) => `${escapeReservedWords(value.key)}=${value.value}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOrderByExpr = (orderExpr: Record<string, SortType> | undefined) => {\n return !!orderExpr\n ? ` ORDER BY ${Object.keys(orderExpr)\n .map((value: string) => `${escapeReservedWords(value)} ${orderExpr[value]}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLimitExpr = (limit: number | undefined) => {\n return Number.isInteger(limit) ? ` LIMIT ${limit}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOffsetExpr = (offset: number | undefined) => {\n return Number.isInteger(offset) ? ` OFFSET ${offset}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildUseKeysExpr = (useKeys: string[] | undefined) => {\n return Array.isArray(useKeys) ? ` USE KEYS ${stringifyValues(useKeys)}` : '';\n};\n\n// end select expression functions\n\n//group by expression functions\n/**\n *@ignore\n */\nconst _buildGroupByExpr = (\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr\n) => {\n try {\n if ((lettingExpr || havingExpr) && !groupByExpr) {\n throw new QueryGroupByParamsException();\n }\n if (!groupByExpr) {\n return '';\n }\n return ` ${_buildGroupBy(groupByExpr)}${_buildLetExpr(\n lettingExpr,\n 'LETTING'\n )}${buildWhereExpr(havingExpr as LogicalWhereExpr, 'HAVING')}`;\n } catch {\n throw new QueryGroupByParamsException();\n }\n};\n\n/**\n *@ignore\n */\nconst _buildGroupBy = (groupByExpr: IGroupBy[]) => {\n return `GROUP BY ${groupByExpr\n .map((value: IGroupBy) => {\n return `${escapeReservedWords(value.expr)}${value.as ? ` AS ${value.as}` : ''}`;\n })\n .join(',')}`;\n};\n\n//end group by expression functions\n\n// where expression functions\n\n/**\n * Create WHERE N1QL Expressions.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/where.html}\n * @param clause WHERE Clause param\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereExpr = (expr: LogicalWhereExpr | undefined, clause?: string): string => {\n return expr ? ` ${clause ? clause : 'WHERE'} ${buildWhereClauseExpr('', expr)}` : '';\n};\n\n/**\n * @ignore\n *\n **/\nexport const verifyWhereObjectKey = (clause: LogicalWhereExpr) => {\n let exist = false;\n for (const key in clause) {\n if (['$and', '$or', '$not', '$any', '$$every', '$in', '$within'].includes(key)) {\n exist = true;\n break;\n }\n }\n return exist;\n};\n\n/**\n * Recursive function to create WHERE N1QL Expressions.\n * @param n1ql N1QL Query String\n * @param clause WHERE Clause param\n *\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereClauseExpr = (n1ql: string, clause: LogicalWhereExpr): string => {\n try {\n if (!verifyWhereObjectKey(clause)) {\n return _buildFieldClauseExpr(\n clause as Record<string, string | number | boolean | ComparisonWhereExpr>\n );\n }\n\n return Object.keys(clause)\n .map((key) => {\n if (CollectionSelectOperatorDict[key]) {\n return `${_buildWhereCollectionExpr(\n key as CollectionSelectOperator,\n clause[key]\n )}`;\n }\n if (CollectionInWithinOperatorDict[key]) {\n return `${_buildCollectionInWithinOperator(\n key as CollectionInWithinOperator,\n clause[key]\n )}`;\n }\n if (Array.isArray(clause[key])) {\n const prefix = key === '$not' ? `${LogicalOperatorDict[key]} ` : '';\n const joinOp = key === '$not' ? ` AND ` : ` ${LogicalOperatorDict[key]} `;\n return `${prefix}(${clause[key]\n .map((value) => buildWhereClauseExpr(n1ql, value as LogicalWhereExpr))\n .join(joinOp)})`;\n } else {\n return `${buildWhereClauseExpr(n1ql, {[key]: clause[key]})}`;\n }\n })\n .join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildFieldClauseExpr = (\n field: Record<string, string | number | boolean | ComparisonWhereExpr>\n) => {\n try {\n const expr = Object.keys(field).map((value: string) => {\n if (typeof field[value] === 'object' && !Array.isArray(field[value])) {\n return `${_buildComparisionClauseExpr(value, field[value] as ComparisonWhereExpr)}`;\n }\n if (!value.includes('$')) {\n if (typeof field[value] === 'string') {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n if (\n typeof field[value] === 'number' ||\n typeof field[value] === 'boolean' ||\n Array.isArray(field[value])\n ) {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n });\n return expr.join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildComparisionClauseExpr = (fieldName: string, comparison: ComparisonWhereExpr) => {\n try {\n const expr = Object.keys(comparison)\n .map((value: string) => {\n if (!!comparison[value]) {\n if (ComparisonEmptyOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonEmptyOperatorDict[value]\n }`;\n }\n if (ComparisonSingleOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)}${\n ComparisonSingleOperatorDict[value]\n }${stringifyValues(comparison[value])}`;\n }\n if (ComparisonSingleStringOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonSingleStringOperatorDict[value]\n } ${stringifyValues(comparison[value])}`;\n }\n if (\n ComparisonMultipleOperatorDict.hasOwnProperty(value) &&\n Array.isArray(comparison[value])\n ) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonMultipleOperatorDict[value]\n } ${comparison[value].map((v) => stringifyValues(v)).join(' AND ')}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n })\n .join(` AND `);\n return Object.keys(comparison).length > 1 ? `(${expr})` : expr;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithinOperator = (\n op: CollectionInWithinOperator,\n expr: CollectionInWithinOperatorValue,\n excludeOperator?: boolean\n): string => {\n if (!op || !expr.target_expr || !expr.search_expr) {\n throw new InWithinOperatorExceptions();\n }\n return `${expr.search_expr}${!excludeOperator && expr.$not ? ' NOT ' : ' '}${\n CollectionInWithinOperatorDict[op]\n } ${excludeOperator ? expr.target_expr : stringifyValues(expr.target_expr)}`;\n};\n\nconst stringifyValues = (value: unknown) => {\n return JSON.stringify(value).replace(/\\\\/gi, '');\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithIn = (collection: CollectionInWithinOperatorType) => {\n const op = collection.$in ? '$in' : collection.$within ? '$within' : undefined;\n if (!op) {\n throw new Error(\n 'The Collection Operator needs to have the following clauses declared (IN | WITHIN) and SATISFIES.'\n );\n }\n return `${_buildCollectionInWithinOperator(\n op,\n collection[op] as CollectionInWithinOperatorValue,\n true\n )}`;\n};\n\n/**\n * @ignore\n * */\nconst _buildWhereCollectionExpr = (\n op: CollectionSelectOperator,\n expr: CollectionExpressionType\n) => {\n return `${CollectionSelectOperatorDict[op]} ${expr.$expr\n .map((value) => _buildCollectionInWithIn(value))\n .join(',')} ${CollectionSatisfiesOperatorDict['$satisfies']} ${buildWhereClauseExpr(\n '',\n expr.$satisfied\n )} END`;\n};\n\n// end where expression functions\n\n// index expression functions\n\n/**\n * Build a INDEX N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/createindex.html}\n * @param collection Collection name\n * @param type INDEX clause types can be 'CREATE' | 'BUILD' | 'DROP' | 'CREATE PRIMARY'\n * @param on ON Clause param\n * @param where WHERE Clause param\n * @param usingGSI use a Global Secondary Index(GSI).\n * @param withExpr WITH Clause param\n *\n * @return N1QL INDEX Query\n * */\nexport const buildIndexExpr = (\n collection: string,\n type: IndexType,\n name: string,\n on?: IIndexOnParams[],\n where?: LogicalWhereExpr,\n usingGSI?: boolean,\n withExpr?: IIndexWithParams\n): string => {\n if (['BUILD', 'CREATE', 'CREATE PRIMARY'].includes(type) && on) {\n return `${type} INDEX \\`${name}\\` ON \\`${collection}\\`(${buildOnExpr(on)})${buildWhereExpr(\n where\n )} ${usingGSI ? 'USING GSI' : ''} ${buildWithExpr(withExpr)}`;\n } else {\n return `${type} INDEX \\`${collection}\\`.\\`${name}\\`${usingGSI ? ' USING GSI' : ''}`;\n }\n};\n\n/**\n * @ignore\n * */\nconst buildOnExpr = (on: IIndexOnParams[]) => {\n return on\n .map((value: IIndexOnParams) => {\n return `${escapeReservedWords(value.name)}${buildOnSortExpr(value)}`;\n })\n .join(',');\n};\n\n/**\n * @ignore\n * */\nconst buildOnSortExpr = (onExpr?: IIndexOnParams) => {\n if (onExpr && onExpr.hasOwnProperty('sort')) {\n return `[\"${onExpr.sort}\"]`;\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithExpr = (withExpr?: IIndexWithParams) => {\n if (withExpr) {\n const resultExpr = Object.keys(withExpr)\n .map((value: string) => {\n switch (value) {\n case 'nodes':\n return buildWithNodesExpr(withExpr[value]);\n case 'defer_build':\n case 'num_replica':\n return `\"${value}\": ${withExpr[value]}`;\n default:\n throw new Error('The WITH clause has an incorrect syntax');\n }\n })\n .join(',');\n return !!resultExpr ? `WITH {${resultExpr}}` : '';\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithNodesExpr = (withNodesExpr?: string[]) => {\n if (withNodesExpr) {\n return `\"nodes\": ${stringifyValues(withNodesExpr)}`;\n }\n};\n\n// end index expression functions\n"]}
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/query/helpers/builders.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CollectionExpressionType,\n CollectionInWithinOperator,\n CollectionInWithinOperatorType,\n CollectionInWithinOperatorValue,\n CollectionSelectOperator,\n ComparisonWhereExpr,\n IField,\n IGroupBy,\n IIndexOnParams,\n IIndexWithParams,\n ILetExpr,\n IndexType,\n ISelectAggType,\n ISelectType,\n LogicalWhereExpr,\n SortType,\n} from '../interface/query.types';\nimport {\n InWithinOperatorExceptions,\n QueryGroupByParamsException,\n QueryOperatorNotFoundException,\n SelectClauseException,\n WhereClauseException,\n} from '../exceptions';\nimport {escapeReservedWords} from '../utils';\n\nimport {\n AggDict,\n CollectionInWithinOperatorDict,\n CollectionSatisfiesOperatorDict,\n CollectionSelectOperatorDict,\n ComparisonEmptyOperatorDict,\n ComparisonMultipleOperatorDict,\n ComparisonSingleOperatorDict,\n ComparisonSingleStringOperatorDict,\n LogicalOperatorDict,\n ResultExprDict,\n ReturnResultDict,\n} from './dictionary';\n\n// select expressions functions\n/**\n * Build a SELECT N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/select-syntax.html}\n * @param collection Collection name\n * @param select SELECT Clause param\n * @param letExpr LET Clause param\n * @param where WHERE Clause param\n * @param orderBy ORDER BY Clause param\n * @param limit LIMIT Clause param\n * @param offset OFFSET Clause param\n * @param useExpr USE Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const selectBuilder = (\n collection: string,\n select: ISelectType[] | string,\n letExpr?: ILetExpr[],\n where?: LogicalWhereExpr,\n orderBy?: Record<string, SortType>,\n limit?: number,\n offset?: number,\n useExpr?: string[],\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr,\n plainJoinExpr?: string\n): string => {\n try {\n let expr = '';\n if (typeof select === 'string') {\n expr = select;\n }\n if (Array.isArray(select)) {\n expr = buildSelectArrayExpr(select);\n }\n const _collection =\n collection.indexOf(' ') !== -1\n ? `\\`${collection}`.replace(' ', '` ')\n : collection.indexOf('`') !== -1\n ? collection\n : `\\`${collection}\\``;\n return `SELECT ${expr} FROM ${_collection}${\n plainJoinExpr ? ` ${plainJoinExpr} ` : ''\n }${_buildUseKeysExpr(useExpr)}${_buildLetExpr(letExpr)}${buildWhereExpr(\n where\n )}${_buildGroupByExpr(groupByExpr, lettingExpr, havingExpr)}${_buildOrderByExpr(\n orderBy\n )}${_buildLimitExpr(limit)}${_buildOffsetExpr(offset)}`;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAS = (c: ISelectAggType | IField) => {\n return c.hasOwnProperty('as') ? ` AS ${c['as']}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildField = (clause: IField | string) => {\n if (clause.hasOwnProperty('name')) {\n return `${escapeReservedWords(clause['name'])}${_buildAS(clause as IField)}`;\n }\n return `${escapeReservedWords(clause as string)}`;\n};\n\n/**\n * Create N1QL queries from select array params\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectArrayExpr = (clause: ISelectType[]): string => {\n return `${clause.map((c) => buildSelectExpr('', c)).join(',')}`;\n};\n\n/**\n * Recursive function to create N1QL queries.\n * @param n1ql N1QL Query String\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectExpr = (n1ql: string, clause: ISelectType): string => {\n try {\n if (clause.hasOwnProperty('$field')) {\n return _buildField(clause['$field']);\n }\n const key = Object.keys(clause)[0];\n if (ReturnResultDict.hasOwnProperty(key)) {\n return `${ReturnResultDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (ResultExprDict.hasOwnProperty(key)) {\n return `${ResultExprDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (AggDict.hasOwnProperty(key)) {\n // todo check if have AS expr inside of Agg function.\n return `${AggDict[key]}(${_buildAggDictExpr(\n clause as ISelectAggType,\n key\n )}${buildSelectExpr(n1ql, clause[key])})${_buildAS(clause[key])}`;\n }\n throw new SelectClauseException();\n } catch {\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAggDictExpr = (clause: ISelectAggType, key: string) => {\n if (AggDict.hasOwnProperty(key)) {\n if (clause[key].hasOwnProperty('ro')) {\n return `${ReturnResultDict[clause[key]['ro']]} `;\n }\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLetExpr = (letExpr: ILetExpr[] | undefined, clause?: string) => {\n return Array.isArray(letExpr)\n ? ` ${clause ? clause : 'LET'} ${letExpr\n .map((value: ILetExpr) => `${escapeReservedWords(value.key)}=${value.value}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOrderByExpr = (orderExpr: Record<string, SortType> | undefined) => {\n return !!orderExpr\n ? ` ORDER BY ${Object.keys(orderExpr)\n .map((value: string) => `${escapeReservedWords(value)} ${orderExpr[value]}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLimitExpr = (limit: number | undefined) => {\n return Number.isInteger(limit) ? ` LIMIT ${limit}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOffsetExpr = (offset: number | undefined) => {\n return Number.isInteger(offset) ? ` OFFSET ${offset}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildUseKeysExpr = (useKeys: string[] | undefined) => {\n return Array.isArray(useKeys) ? ` USE KEYS ${stringifyValues(useKeys)}` : '';\n};\n\n// end select expression functions\n\n//group by expression functions\n/**\n *@ignore\n */\nconst _buildGroupByExpr = (\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr\n) => {\n try {\n if ((lettingExpr || havingExpr) && !groupByExpr) {\n throw new QueryGroupByParamsException();\n }\n if (!groupByExpr) {\n return '';\n }\n return ` ${_buildGroupBy(groupByExpr)}${_buildLetExpr(\n lettingExpr,\n 'LETTING'\n )}${buildWhereExpr(havingExpr as LogicalWhereExpr, 'HAVING')}`;\n } catch {\n throw new QueryGroupByParamsException();\n }\n};\n\n/**\n *@ignore\n */\nconst _buildGroupBy = (groupByExpr: IGroupBy[]) => {\n return `GROUP BY ${groupByExpr\n .map((value: IGroupBy) => {\n return `${escapeReservedWords(value.expr)}${value.as ? ` AS ${value.as}` : ''}`;\n })\n .join(',')}`;\n};\n\n//end group by expression functions\n\n// where expression functions\n\n/**\n * Create WHERE N1QL Expressions.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/where.html}\n * @param clause WHERE Clause param\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereExpr = (expr: LogicalWhereExpr | undefined, clause?: string): string => {\n return expr ? ` ${clause ? clause : 'WHERE'} ${buildWhereClauseExpr('', expr)}` : '';\n};\n\n/**\n * @ignore\n *\n **/\nexport const verifyWhereObjectKey = (clause: LogicalWhereExpr) => {\n let exist = false;\n for (const key in clause) {\n if (['$and', '$or', '$not', '$any', '$$every', '$in', '$within'].includes(key)) {\n exist = true;\n break;\n }\n }\n return exist;\n};\n\n/**\n * Recursive function to create WHERE N1QL Expressions.\n * @param n1ql N1QL Query String\n * @param clause WHERE Clause param\n *\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereClauseExpr = (n1ql: string, clause: LogicalWhereExpr): string => {\n try {\n if (!verifyWhereObjectKey(clause)) {\n return _buildFieldClauseExpr(\n clause as Record<string, string | number | boolean | ComparisonWhereExpr>\n );\n }\n\n return Object.keys(clause)\n .map((key) => {\n if (CollectionSelectOperatorDict[key]) {\n return `${_buildWhereCollectionExpr(\n key as CollectionSelectOperator,\n clause[key]\n )}`;\n }\n if (CollectionInWithinOperatorDict[key]) {\n return `${_buildCollectionInWithinOperator(\n key as CollectionInWithinOperator,\n clause[key]\n )}`;\n }\n if (Array.isArray(clause[key])) {\n const prefix = key === '$not' ? `${LogicalOperatorDict[key]} ` : '';\n const joinOp = key === '$not' ? ` AND ` : ` ${LogicalOperatorDict[key]} `;\n return `${prefix}(${clause[key]\n .map((value) => buildWhereClauseExpr(n1ql, value as LogicalWhereExpr))\n .join(joinOp)})`;\n } else {\n return `${buildWhereClauseExpr(n1ql, {[key]: clause[key]})}`;\n }\n })\n .join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildFieldClauseExpr = (\n field: Record<string, string | number | boolean | ComparisonWhereExpr>\n) => {\n try {\n const expr = Object.keys(field).map((value: string) => {\n if (typeof field[value] === 'object' && !Array.isArray(field[value])) {\n return `${_buildComparisionClauseExpr(value, field[value] as ComparisonWhereExpr)}`;\n }\n if (!value.includes('$')) {\n if (typeof field[value] === 'string') {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n if (\n typeof field[value] === 'number' ||\n typeof field[value] === 'boolean' ||\n Array.isArray(field[value])\n ) {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n });\n return expr.join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildComparisionClauseExpr = (fieldName: string, comparison: ComparisonWhereExpr) => {\n try {\n const expr = Object.keys(comparison)\n .map((value: string) => {\n if (!!comparison[value]) {\n if (ComparisonEmptyOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonEmptyOperatorDict[value]\n }`;\n }\n if (ComparisonSingleOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)}${\n ComparisonSingleOperatorDict[value]\n }${stringifyValues(comparison[value])}`;\n }\n if (ComparisonSingleStringOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonSingleStringOperatorDict[value]\n } ${stringifyValues(comparison[value])}`;\n }\n if (\n ComparisonMultipleOperatorDict.hasOwnProperty(value) &&\n Array.isArray(comparison[value])\n ) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonMultipleOperatorDict[value]\n } ${comparison[value].map((v) => stringifyValues(v)).join(' AND ')}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n })\n .join(` AND `);\n return Object.keys(comparison).length > 1 ? `(${expr})` : expr;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithinOperator = (\n op: CollectionInWithinOperator,\n expr: CollectionInWithinOperatorValue,\n excludeOperator?: boolean\n): string => {\n if (!op || !expr.target_expr || !expr.search_expr) {\n throw new InWithinOperatorExceptions();\n }\n return `${expr.search_expr}${!excludeOperator && expr.$not ? ' NOT ' : ' '}${\n CollectionInWithinOperatorDict[op]\n } ${excludeOperator ? expr.target_expr : stringifyValues(expr.target_expr)}`;\n};\n\nconst stringifyValues = (value: unknown) => {\n return JSON.stringify(value).replace(/\\\\/gi, '');\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithIn = (collection: CollectionInWithinOperatorType) => {\n const op = collection.$in ? '$in' : collection.$within ? '$within' : undefined;\n if (!op) {\n throw new Error(\n 'The Collection Operator needs to have the following clauses declared (IN | WITHIN) and SATISFIES.'\n );\n }\n return `${_buildCollectionInWithinOperator(\n op,\n collection[op] as CollectionInWithinOperatorValue,\n true\n )}`;\n};\n\n/**\n * @ignore\n * */\nconst _buildWhereCollectionExpr = (\n op: CollectionSelectOperator,\n expr: CollectionExpressionType\n) => {\n return `${CollectionSelectOperatorDict[op]} ${expr.$expr\n .map((value) => _buildCollectionInWithIn(value))\n .join(',')} ${CollectionSatisfiesOperatorDict['$satisfies']} ${buildWhereClauseExpr(\n '',\n expr.$satisfied\n )} END`;\n};\n\n// end where expression functions\n\n// index expression functions\n\n/**\n * Build a INDEX N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/createindex.html}\n * @param collection Collection name\n * @param type INDEX clause types can be 'CREATE' | 'BUILD' | 'DROP' | 'CREATE PRIMARY'\n * @param on ON Clause param\n * @param where WHERE Clause param\n * @param usingGSI use a Global Secondary Index(GSI).\n * @param withExpr WITH Clause param\n *\n * @return N1QL INDEX Query\n * */\nexport const buildIndexExpr = (\n collection: string,\n type: IndexType,\n name: string,\n on?: IIndexOnParams[],\n where?: LogicalWhereExpr,\n usingGSI?: boolean,\n withExpr?: IIndexWithParams\n): string => {\n if (['BUILD', 'CREATE', 'CREATE PRIMARY'].includes(type) && on) {\n return `${type} INDEX \\`${name}\\` ON \\`${collection}\\`(${buildOnExpr(on)})${buildWhereExpr(\n where\n )} ${usingGSI ? 'USING GSI' : ''} ${buildWithExpr(withExpr)}`;\n } else {\n return `${type} INDEX \\`${collection}\\`.\\`${name}\\`${usingGSI ? ' USING GSI' : ''}`;\n }\n};\n\n/**\n * @ignore\n * */\nconst buildOnExpr = (on: IIndexOnParams[]) => {\n return on\n .map((value: IIndexOnParams) => {\n return `${escapeReservedWords(value.name)}${buildOnSortExpr(value)}`;\n })\n .join(',');\n};\n\n/**\n * @ignore\n * */\nconst buildOnSortExpr = (onExpr?: IIndexOnParams) => {\n if (onExpr && onExpr.hasOwnProperty('sort')) {\n return `[\"${onExpr.sort}\"]`;\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithExpr = (withExpr?: IIndexWithParams) => {\n if (withExpr) {\n const resultExpr = Object.keys(withExpr)\n .map((value: string) => {\n switch (value) {\n case 'nodes':\n return buildWithNodesExpr(withExpr[value]);\n case 'defer_build':\n case 'num_replica':\n return `\"${value}\": ${withExpr[value]}`;\n default:\n throw new Error('The WITH clause has an incorrect syntax');\n }\n })\n .join(',');\n return !!resultExpr ? `WITH {${resultExpr}}` : '';\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithNodesExpr = (withNodesExpr?: string[]) => {\n if (withNodesExpr) {\n return `\"nodes\": ${stringifyValues(withNodesExpr)}`;\n }\n};\n\n// end index expression functions\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AggType, CollectionSelectOperator, CollectionInWithinOperator, ComparisonEmptyOperatorType, ComparisonMultipleOperatorType, ComparisonSingleOperatorType, ComparisonSingleStringOperatorType, LogicalOperatorType, ResultExprType, ReturnResultType, CollectionSatisfiesOperator } from '../interface/query.types';
|
|
2
|
+
/**
|
|
3
|
+
* Dictionary for handling aggregation functions.
|
|
4
|
+
* */
|
|
5
|
+
export declare const AggDict: Record<AggType, string>;
|
|
6
|
+
/**
|
|
7
|
+
* Dictionary for handling result expressions RAW | ELEMENT | VALUE
|
|
8
|
+
* */
|
|
9
|
+
export declare const ResultExprDict: Record<ResultExprType, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Dictionary for handling result expressions ALL | DISTINCT
|
|
12
|
+
* */
|
|
13
|
+
export declare const ReturnResultDict: Record<ReturnResultType, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Dictionary for handling Boolean comparison operators
|
|
16
|
+
* */
|
|
17
|
+
export declare const ComparisonEmptyOperatorDict: Record<ComparisonEmptyOperatorType, string>;
|
|
18
|
+
/**
|
|
19
|
+
* Dictionary for handling Numeric comparison operators
|
|
20
|
+
* */
|
|
21
|
+
export declare const ComparisonSingleOperatorDict: Record<ComparisonSingleOperatorType, string>;
|
|
22
|
+
/**
|
|
23
|
+
* Dictionary for handling String comparison operators
|
|
24
|
+
* */
|
|
25
|
+
export declare const ComparisonSingleStringOperatorDict: Record<ComparisonSingleStringOperatorType, string>;
|
|
26
|
+
/**
|
|
27
|
+
* Dictionary for handling Range comparison operators
|
|
28
|
+
* */
|
|
29
|
+
export declare const ComparisonMultipleOperatorDict: Record<ComparisonMultipleOperatorType, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Dictionary for handling logical operators
|
|
32
|
+
* */
|
|
33
|
+
export declare const LogicalOperatorDict: Record<LogicalOperatorType, string>;
|
|
34
|
+
/**
|
|
35
|
+
* Dictionary for handling collection select operators
|
|
36
|
+
* */
|
|
37
|
+
export declare const CollectionSelectOperatorDict: Record<CollectionSelectOperator, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Dictionary for handling collection (in | within) operators
|
|
40
|
+
* */
|
|
41
|
+
export declare const CollectionInWithinOperatorDict: Record<CollectionInWithinOperator, string>;
|
|
42
|
+
/**
|
|
43
|
+
* Dictionary for handling collection satisfies operators
|
|
44
|
+
* */
|
|
45
|
+
export declare const CollectionSatisfiesOperatorDict: Record<CollectionSatisfiesOperator, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const n1qlReservedWords: string[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { selectBuilder, buildSelectExpr, buildWhereClauseExpr, buildIndexExpr, buildSelectArrayExpr, AggDict, ResultExprDict, ReturnResultDict, } from './helpers';
|
|
2
|
+
export { SelectClauseException, MultipleQueryTypesException, WhereClauseException, QueryOperatorNotFoundException, IndexParamsUsingGSIExceptions, InWithinOperatorExceptions, QueryGroupByParamsException, IndexParamsOnExceptions, } from './exceptions';
|
|
3
|
+
export { QueryBuilder } from './query';
|
|
4
|
+
export { ILetExpr, SortType, ISelectType, LogicalWhereExpr, ComparisonWhereExpr, IField, IIndexOnParams, IIndexWithParams, IndexType, ISelectAggType, AggType, ComparisonEmptyOperatorType, ComparisonMultipleOperatorType, ComparisonSingleStringOperatorType, ComparisonSingleOperatorType, LogicalOperatorType, ResultExprType, ReturnResultType, } from './interface/query.types';
|
|
5
|
+
export { parseStringSelectExpr, escapeReservedWords } from './utils';
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
export declare type SortType = 'ASC' | 'DESC';
|
|
2
|
+
/**
|
|
3
|
+
* Result expressions ALL | DISTINCT
|
|
4
|
+
* */
|
|
5
|
+
export declare type ReturnResultType = '$all' | '$distinct';
|
|
6
|
+
/**
|
|
7
|
+
* Result expressions RAW | ELEMENT | VALUE
|
|
8
|
+
* */
|
|
9
|
+
export declare type ResultExprType = '$raw' | '$element' | '$value';
|
|
10
|
+
/**
|
|
11
|
+
* List of aggregation functions.
|
|
12
|
+
* */
|
|
13
|
+
export declare type AggType = '$arrayAgg' | '$avg' | '$mean' | '$count' | '$countn' | '$max' | '$median' | '$min' | '$stddev' | '$stddevPop' | '$stddevSamp' | '$sum' | '$variance' | '$variancePop' | '$varianceSamp' | '$varPop' | '$varSamp';
|
|
14
|
+
/**
|
|
15
|
+
* List of Boolean comparison operators.
|
|
16
|
+
* */
|
|
17
|
+
export declare type ComparisonEmptyOperatorType = '$isNull' | '$isNotNull' | '$isMissing' | '$isNotMissing' | '$isValued' | '$isNotValued';
|
|
18
|
+
/**
|
|
19
|
+
* List of Numeric comparison operators.
|
|
20
|
+
* */
|
|
21
|
+
export declare type ComparisonSingleOperatorType = '$eq' | '$neq' | '$gt' | '$gte' | '$lt' | '$lte';
|
|
22
|
+
/**
|
|
23
|
+
* List of String comparison operators.
|
|
24
|
+
* */
|
|
25
|
+
export declare type ComparisonSingleStringOperatorType = '$like' | '$notLike';
|
|
26
|
+
/**
|
|
27
|
+
* List of Range comparison operators.
|
|
28
|
+
* */
|
|
29
|
+
export declare type ComparisonMultipleOperatorType = '$btw' | '$notBtw';
|
|
30
|
+
/**
|
|
31
|
+
* List of Logical operators.
|
|
32
|
+
* */
|
|
33
|
+
export declare type LogicalOperatorType = '$and' | '$or' | '$not';
|
|
34
|
+
/**
|
|
35
|
+
* Collection Select Operator.
|
|
36
|
+
* */
|
|
37
|
+
export declare type CollectionSelectOperator = '$any' | '$every';
|
|
38
|
+
/**
|
|
39
|
+
* Collection IN and WITHIN Operators.
|
|
40
|
+
* */
|
|
41
|
+
export declare type CollectionInWithinOperator = '$in' | '$within';
|
|
42
|
+
/**
|
|
43
|
+
* List of Collection IN and WITHIN Operators.
|
|
44
|
+
* */
|
|
45
|
+
export declare type CollectionSatisfiesOperator = '$satisfies';
|
|
46
|
+
export interface CollectionInWithinOperatorValue {
|
|
47
|
+
search_expr: unknown;
|
|
48
|
+
target_expr: unknown;
|
|
49
|
+
$not?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Structure of the collection in within operator
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```
|
|
56
|
+
* {$in:{search_expr: 'search', target_expr: 'address', $not: true}}
|
|
57
|
+
* ```
|
|
58
|
+
* */
|
|
59
|
+
export declare type CollectionInWithinOperatorType = {
|
|
60
|
+
[key in CollectionInWithinOperator]?: CollectionInWithinOperatorValue;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Structure of the collection expression
|
|
64
|
+
*
|
|
65
|
+
* */
|
|
66
|
+
export interface CollectionExpressionType {
|
|
67
|
+
$expr: CollectionInWithinOperatorType[];
|
|
68
|
+
$satisfied: FieldWhereExpr;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Structure of the collection in within operator
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```
|
|
75
|
+
* {$any: {$expr: [{$in:{search_expr: 'search', target_expr: 'address', $not: true} }], $satisfied:{address: '10'}}}
|
|
76
|
+
* ```
|
|
77
|
+
* */
|
|
78
|
+
export declare type CollectionSelectOperatorType = {
|
|
79
|
+
[key in CollectionSelectOperator]?: CollectionExpressionType;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Structure of the comparison operators.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```
|
|
86
|
+
* {operator: value} -> e.g { $like: '%ottoman%'}
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* */
|
|
90
|
+
export declare type ComparisonWhereExpr = {
|
|
91
|
+
[key in ComparisonEmptyOperatorType | ComparisonSingleOperatorType | ComparisonMultipleOperatorType | ComparisonSingleStringOperatorType]?: string | number | boolean | (number | string)[];
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Structure of WHERE field expression
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```
|
|
98
|
+
* {field: {operator: value}} -> e.g { address: {$like: '%ottoman%'}} | {$or: [{ address: {$like: '%ottoman%'}}]}
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* */
|
|
102
|
+
export declare type FieldWhereExpr = Record<string, string | number | boolean | ComparisonWhereExpr> | LogicalWhereExpr;
|
|
103
|
+
/**
|
|
104
|
+
* Structure of Logical WHERE expression
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```
|
|
108
|
+
* {field: {operator: value}} -> e.g {$or: [{ address: {$like: '%ottoman%'}}]}
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* */
|
|
112
|
+
export declare type LogicalWhereExpr = {
|
|
113
|
+
[key in LogicalOperatorType]?: FieldWhereExpr[];
|
|
114
|
+
} | {
|
|
115
|
+
[key: string]: FieldWhereExpr;
|
|
116
|
+
} | {
|
|
117
|
+
[key: string]: unknown;
|
|
118
|
+
} | CollectionSelectOperatorType | CollectionInWithinOperatorType;
|
|
119
|
+
/**
|
|
120
|
+
* SELECT field structure
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```
|
|
124
|
+
* e.g { name: 'address', as: 'addr'}
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* */
|
|
128
|
+
export interface IField {
|
|
129
|
+
name: string;
|
|
130
|
+
as?: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* SELECT aggregation expression
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```
|
|
137
|
+
* {$count: {$field: {name: 'address'}, as: 'addr'}} | {$count: {$field: 'address'}}
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* */
|
|
141
|
+
export declare type ISelectAggType = {
|
|
142
|
+
[key in AggType]?: ISelectFieldType;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* SELECT field expression
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```
|
|
149
|
+
* {$field: {name: 'address'}, as: 'addr'}
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* */
|
|
153
|
+
export interface ISelectFieldType {
|
|
154
|
+
$field: IField | string;
|
|
155
|
+
as?: string;
|
|
156
|
+
ro?: ReturnResultType;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* SELECT result expression
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```
|
|
163
|
+
* {$raw: {$field: {name: 'address'}, as: 'addr'}}
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* */
|
|
167
|
+
export declare type ISelectResultExprType = {
|
|
168
|
+
[key in ResultExprType]?: ISelectAggType | ISelectFieldType;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* SELECT result expression
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```
|
|
175
|
+
* {$all: {$field: {name: 'address'}, as: 'addr'}}
|
|
176
|
+
* ```
|
|
177
|
+
*
|
|
178
|
+
* */
|
|
179
|
+
export declare type ISelectReturnResultType = {
|
|
180
|
+
[key in ReturnResultType]?: ISelectResultExprType | ISelectAggType | ISelectFieldType;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* SELECT expression
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```
|
|
187
|
+
* {$all: {$field: {name: 'address'}, as: 'addr'}, $field: 'type', $field: {name: 'count'}}
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* */
|
|
191
|
+
export declare type ISelectType = ISelectReturnResultType | ISelectResultExprType | ISelectAggType | ISelectFieldType;
|
|
192
|
+
/**
|
|
193
|
+
* LET expression
|
|
194
|
+
* */
|
|
195
|
+
export interface ILetExpr {
|
|
196
|
+
key: string;
|
|
197
|
+
value: unknown;
|
|
198
|
+
}
|
|
199
|
+
export interface IGroupBy {
|
|
200
|
+
expr: string;
|
|
201
|
+
as?: string;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* List of params to build a SELECT clause
|
|
205
|
+
* */
|
|
206
|
+
export interface IConditionExpr {
|
|
207
|
+
select?: ISelectType[] | string;
|
|
208
|
+
let?: ILetExpr[];
|
|
209
|
+
where?: LogicalWhereExpr;
|
|
210
|
+
orderBy?: Record<string, SortType>;
|
|
211
|
+
limit?: number;
|
|
212
|
+
offset?: number;
|
|
213
|
+
use?: string[];
|
|
214
|
+
groupBy?: IGroupBy[];
|
|
215
|
+
letting?: ILetExpr[];
|
|
216
|
+
having?: LogicalWhereExpr;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Types of supported index statements
|
|
220
|
+
* */
|
|
221
|
+
export declare type IndexType = 'CREATE' | 'BUILD' | 'DROP' | 'CREATE PRIMARY';
|
|
222
|
+
/**
|
|
223
|
+
* Index ON clause types
|
|
224
|
+
* */
|
|
225
|
+
export interface IIndexOnParams {
|
|
226
|
+
name: string;
|
|
227
|
+
sort?: SortType;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Index WITH clause
|
|
231
|
+
* */
|
|
232
|
+
export interface IIndexWithParams {
|
|
233
|
+
nodes?: string[];
|
|
234
|
+
defer_build?: boolean;
|
|
235
|
+
num_replica?: number;
|
|
236
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { QueryResult } from 'couchbase';
|
|
2
|
+
/**
|
|
3
|
+
* Query couchbase db
|
|
4
|
+
* @param query
|
|
5
|
+
*
|
|
6
|
+
const query = `
|
|
7
|
+
SELECT airportname, city FROM \`travel-sample\`
|
|
8
|
+
WHERE type=$1
|
|
9
|
+
AND city=$2
|
|
10
|
+
`;
|
|
11
|
+
const options = {parameters: ['airport', 'San Jose']};
|
|
12
|
+
* @param options
|
|
13
|
+
*/
|
|
14
|
+
export declare function QueryCluster(query: string, options?: any): Promise<QueryResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.cluster.js","sourceRoot":"","sources":["../../src/query/query.cluster.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"query.cluster.js","sourceRoot":"","sources":["../../src/query/query.cluster.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6DAAgD;AAEhD;;;;;;;;;;;GAWG;AACH,SAAsB,YAAY,CAAC,KAAa,EAAE,OAAa;;;;;;oBACrD,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;oBAElC,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAA;;oBAA5C,MAAM,GAAG,SAAmC;oBAClD,sBAAO,MAAM,EAAC;;;oBAEd,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAK,CAAC,CAAC;oBACvC,MAAM,OAAK,CAAC;;;;;CAEnB;AATD,oCASC","sourcesContent":["import {QueryResult} from 'couchbase';\n\nimport CouchbaseConnection from '../connection';\n\n/**\n * Query couchbase db\n * @param query\n * \n const query = `\n SELECT airportname, city FROM \\`travel-sample\\`\n WHERE type=$1\n AND city=$2\n `;\n const options = {parameters: ['airport', 'San Jose']};\n * @param options\n */\nexport async function QueryCluster(query: string, options?: any): Promise<QueryResult> {\n const cluster = CouchbaseConnection.Instance.cluster;\n try {\n const result = await cluster.query(query, options);\n return result;\n } catch (error) {\n console.error('Query failed: ', error);\n throw error;\n }\n}\n"]}
|