@douglasgabr/cypher-builder
Advanced tools
Comparing version 3.2.0 to 3.3.0
@@ -0,1 +1,20 @@ | ||
# 3.3.0 / 2022-01-07 | ||
- feat(builder): ✨ add `addParameter` to builder | ||
- enable option to add custom arbitrary parameters to builder | ||
```typescript | ||
import { Builder } from '@douglasgabr/cypher-builder'; | ||
const builder = new Builder(); | ||
// returns builder for method chaining | ||
builder.addParameter('value', 'name'); | ||
// { value: 'name' } | ||
// if parameter name is not provided, it will be generated | ||
const generatedParameterName = builder.addParameter('value'); | ||
// { [generatedParameterName]: 'value' } | ||
``` | ||
# 3.2.0 / 2022-01-06 | ||
@@ -2,0 +21,0 @@ |
@@ -25,8 +25,8 @@ import { StringBuilder } from '../types/string-builder'; | ||
xorWhere(builder: (whereBuilder: WhereClause) => unknown): this; | ||
andNotPattern(builder: (patternBuilder: PatternBuilder) => unknown): this; | ||
andPattern(builder: (patternBuilder: PatternBuilder) => unknown): this; | ||
orNotPattern(builder: (patternBuilder: PatternBuilder) => unknown): this; | ||
orPattern(builder: (patternBuilder: PatternBuilder) => unknown): this; | ||
xorNotPattern(builder: (patternBuilder: PatternBuilder) => unknown): this; | ||
xorPattern(builder: (patternBuilder: PatternBuilder) => unknown): this; | ||
andPattern: (builder: (patternBuilder: PatternBuilder) => unknown) => this; | ||
andNotPattern: (builder: (patternBuilder: PatternBuilder) => unknown) => this; | ||
orPattern: (builder: (patternBuilder: PatternBuilder) => unknown) => this; | ||
orNotPattern: (builder: (patternBuilder: PatternBuilder) => unknown) => this; | ||
xorPattern: (builder: (patternBuilder: PatternBuilder) => unknown) => this; | ||
xorNotPattern: (builder: (patternBuilder: PatternBuilder) => unknown) => this; | ||
andNot(field: string, value: unknown | Literal): this; | ||
@@ -33,0 +33,0 @@ andNot(field: string, nullComparison: NullComparison): this; |
@@ -89,2 +89,8 @@ "use strict"; | ||
this.predicates = []; | ||
this.andPattern = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).bind(this, 'AND', false); | ||
this.andNotPattern = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).bind(this, 'AND', true); | ||
this.orPattern = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).bind(this, 'OR', false); | ||
this.orNotPattern = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).bind(this, 'OR', true); | ||
this.xorPattern = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).bind(this, 'XOR', false); | ||
this.xorNotPattern = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).bind(this, 'XOR', true); | ||
this.andAll = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPredicateFunction).bind(this, 'AND', false, 'all'); | ||
@@ -139,20 +145,2 @@ this.andNotAll = __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPredicateFunction).bind(this, 'AND', true, 'all'); | ||
} | ||
andNotPattern(builder) { | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).call(this, 'AND', builder, true); | ||
} | ||
andPattern(builder) { | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).call(this, 'AND', builder, false); | ||
} | ||
orNotPattern(builder) { | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).call(this, 'OR', builder, true); | ||
} | ||
orPattern(builder) { | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).call(this, 'OR', builder, false); | ||
} | ||
xorNotPattern(builder) { | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).call(this, 'XOR', builder, true); | ||
} | ||
xorPattern(builder) { | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPattern).call(this, 'XOR', builder, false); | ||
} | ||
andNot(field, comparator, value) { | ||
@@ -204,3 +192,3 @@ return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_add).call(this, 'AND', true, field, comparator, value); | ||
return __classPrivateFieldGet(this, _WhereClause_instances, "m", _WhereClause_addPredicate).call(this, prefix, whereBuilder, not); | ||
}, _WhereClause_addPattern = function _WhereClause_addPattern(prefix, builder, not) { | ||
}, _WhereClause_addPattern = function _WhereClause_addPattern(prefix, not, builder) { | ||
const patternBuilder = new PatternBuilder_1.PatternStringBuilder(this.parametersBag); | ||
@@ -207,0 +195,0 @@ builder(patternBuilder); |
@@ -128,2 +128,15 @@ import { WhereClause } from './clauses/where.clause'; | ||
detachDelete(...items: string[]): this; | ||
/** | ||
* Add a value to the query parameters | ||
* @param value value to be provided as a parameter | ||
* @returns string with the generated parameter name | ||
*/ | ||
addParameter(value: unknown): string; | ||
/** | ||
* Add a value to the query parameters | ||
* @param value value to be provided as a parameter | ||
* @param alias alias for the parameter (will replace any existing parameter with same alias) | ||
* @returns Builder instance for method chaining | ||
*/ | ||
addParameter(value: unknown, alias: string): this; | ||
build(): string; | ||
@@ -130,0 +143,0 @@ buildQueryObject(): { |
@@ -231,2 +231,9 @@ "use strict"; | ||
} | ||
addParameter(value, alias) { | ||
const param = this.parametersBag.add(value, false, alias, typeof alias === 'string'); | ||
if (typeof alias === 'undefined') { | ||
return param; | ||
} | ||
return this; | ||
} | ||
build() { | ||
@@ -233,0 +240,0 @@ return this.clauses.map((c) => c.build()).join('\n'); |
export declare class ParametersBag { | ||
private parametersMap; | ||
constructor(initialMap?: Map<string, unknown>); | ||
add(value?: unknown, with$?: boolean, alias?: string): string; | ||
add(value?: unknown, with$?: boolean, alias?: string, force?: boolean): string; | ||
formatKey(key: string, with$?: boolean): string; | ||
toParametersObject(): Record<string, unknown>; | ||
} |
@@ -8,3 +8,3 @@ "use strict"; | ||
} | ||
add(value, with$ = false, alias) { | ||
add(value, with$ = false, alias, force) { | ||
var _a; | ||
@@ -14,3 +14,3 @@ let paramCount = 1; | ||
let key = _alias; | ||
while (this.parametersMap.has(key)) { | ||
while (this.parametersMap.has(key) && !force) { | ||
key = `${_alias}_${++paramCount}`; | ||
@@ -17,0 +17,0 @@ } |
@@ -89,3 +89,3 @@ "use strict"; | ||
? value.value | ||
: this.parametersBag.add(value, true), | ||
: this.parametersBag.add(value, true, alias ? `${alias}_${label}` : label), | ||
}), {}); | ||
@@ -92,0 +92,0 @@ } |
{ | ||
"name": "@douglasgabr/cypher-builder", | ||
"version": "3.2.0", | ||
"version": "3.3.0", | ||
"description": "Fluent CQL builder for Neo4j", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
91672
1916