Skip to content

Commit 049626b

Browse files
committed
v.0.0.16
Fixed bug in scope query.
1 parent 965b8e9 commit 049626b

7 files changed

Lines changed: 155 additions & 123 deletions

File tree

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
{
22
"name": "database-builder",
3-
"version": "0.0.15",
3+
"version": "0.0.16",
44
"description": "Framework to assist in database manipulation (DDL and CRUD)",
55
"main": "./src/index.js",
66
"types": "./src/index.d.ts",
77
"scripts": {
88
"test": "tsc & mocha src/**/*.spec.js",
99
"test-grep": "tsc & mocha src/**/*.spec.js --grep",
1010
"test-single": "tsc & mocha src/**/*.spec.js --grep Mapper --debug-brk",
11-
"test-debug": "mocha -r ts-node/register src/**/*.spec.ts --debug-brk"
11+
"test-debug": "mocha -r ts-node/register src/**/*.spec.ts --debug-brk",
12+
"publish-npm": "tsc & npm publish"
1213
},
1314
"dependencies": {
1415
"moment": "2.20.1",

src/core/utils.ts

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { ValueTypeToParse } from './utils';
2-
import { LambdaMetadata } from './lambda-metadata';
1+
import * as moment from "moment";
2+
import { ValueTypeToParse } from "./utils";
33
import { WhereBuilder } from "./../crud/where-builder";
44
import { DatabaseHelper } from "./../database-helper";
55
import { ProjectionBuilder } from "./../crud/projection-builder";
6-
import { Expression, ExpressionUtils, LambdaExpression, LambdaColumnMetadata } from "lambda-expression";
7-
import * as moment from "moment";
6+
import { Expression, ExpressionUtils, LambdaColumnMetadata, LambdaExpression } from "lambda-expression";
7+
import { LambdaMetadata } from "./lambda-metadata";
88
import { ExpressionOrColumnEnum } from "./enums/expression-or-column-enum";
99
import { FieldType } from "./enums/field-type";
1010
import { ColumnType } from "./enums/column-type";
@@ -46,11 +46,11 @@ export class Utils {
4646
}
4747

4848
public static isOnlyNumber(value: any): boolean {
49-
return /^[0-9]*$/.test(value)
49+
return /^[0-9]*$/.test(value);
5050
}
5151

5252
public static isStartWithNumber(value: any): boolean {
53-
return /^[0-9]/.test(value)
53+
return /^[0-9]/.test(value);
5454
}
5555

5656
public static isValueNumber(value: any): boolean {
@@ -134,10 +134,6 @@ export class Utils {
134134
return this.getDatabaseHelper().parseToColumnType(type);
135135
}
136136

137-
private static isColumnReservedNameOrNotAllowed(columnName: string): boolean {
138-
return this.isStartWithNumber(columnName) || this.isReservedBoolean(columnName)
139-
}
140-
141137
public static isNameColumn(column: string): boolean {
142138
const isNameColumn = /^[a-zA-Z0-9_\*]*$/;
143139
return isNameColumn.test(column) && !this.isColumnReservedNameOrNotAllowed(column);
@@ -155,80 +151,84 @@ export class Utils {
155151
}
156152

157153
public static normalizeSqlString(inputSql: string): string {
158-
return inputSql.replace(/\s+/g, ' ').trim();
154+
return inputSql.replace(/\s+/g, " ").trim();
159155
}
160156

161157
public static getLambdaMetadata<T>(expression: LambdaExpression<T>): LambdaMetadata {
162-
let columnMetadata = this.getLambdaColumnMetadata(expression);
163-
return <LambdaMetadata>{
158+
const columnMetadata = this.getLambdaColumnMetadata(expression);
159+
return {
164160
left: columnMetadata.columnLeft,
165161
condition: this.conditionSql(columnMetadata),
166162
right: columnMetadata.columnRight,
167-
}
163+
} as LambdaMetadata;
168164
}
169165

170166
public static clearParam(param: ValueTypeToParse): ValueTypeToParse {
171167
if (Utils.isString(param)) {
172-
if(Utils.isOnlyNumber(param)){
168+
if (Utils.isOnlyNumber(param)) {
173169
return +param;
174170
}
175-
if(Utils.isReservedBoolean(param)){
176-
return param === 'true';
171+
if (Utils.isReservedBoolean(param)) {
172+
return param === "true";
177173
}
178174
// remove possiveis " ou ' (aspas duplas ou simples) no inicio ou fim de uma string de valor de parametro
179-
return (<string>param).replace(/(^["']|["']$)/mg, "");
175+
return (param as string).replace(/(^["']|["']$)/mg, "");
180176
}
181177
return param;
182178
}
183179

180+
private static isColumnReservedNameOrNotAllowed(columnName: string): boolean {
181+
return this.isStartWithNumber(columnName) || this.isReservedBoolean(columnName);
182+
}
183+
184184
private static getLambdaColumnMetadata<T>(expression: LambdaExpression<T>): LambdaColumnMetadata {
185185
return this.getExpressionUtils().getColumnByLambdaExpression(expression);
186186
}
187187

188188
private static conditionSql(metadata: LambdaColumnMetadata): Condition[] {
189189
switch (metadata.operator) {
190-
case '==':
191-
case '===':
190+
case "==":
191+
case "===":
192192
if (this.isEquivalentNullExpression(metadata.columnRight)) {
193-
return [Condition.IsNull]
193+
return [Condition.IsNull];
194194
}
195195
return [Condition.Equal];
196-
case '>':
196+
case ">":
197197
return [Condition.Great];
198-
case '>=':
198+
case ">=":
199199
return [Condition.GreatAndEqual];
200-
case '<':
200+
case "<":
201201
return [Condition.Less];
202-
case '<=':
202+
case "<=":
203203
return [Condition.LessAndEqual];
204-
case '!':
204+
case "!":
205205
return [Condition.Not];
206-
case '!=':
207-
case '!==':
206+
case "!=":
207+
case "!==":
208208
if (this.isEquivalentNullExpression(metadata.columnRight)) {
209-
return [Condition.Not, Condition.IsNull]
209+
return [Condition.Not, Condition.IsNull];
210210
}
211211
return [Condition.Not, Condition.Equal];
212-
case 'XX':
212+
case "XX":
213213
// TODO: not implemented
214214
return [Condition.Between];
215-
case 'XXX':
215+
case "XXX":
216216
// TODO: not implemented
217217
return [Condition.In];
218218
// case '':
219219
// return Condition.
220220
default:
221-
throw `Not found condition (${metadata.operator})`
221+
throw new Error(`Not found condition (${metadata.operator})`);
222222
}
223223
}
224224

225225
private static isEquivalentNullExpression(value: string): boolean {
226226
switch (value) {
227-
case 'null':
228-
case 'void 0':
229-
case 'void':
230-
case 'undefined':
231-
case 'nil':
227+
case "null":
228+
case "void 0":
229+
case "void":
230+
case "undefined":
231+
case "nil":
232232
return true;
233233
default:
234234
return false;

src/crud/query/query.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1+
import { QueryReadableBuilder } from "./query-readable-builder";
12
import { QueryCompiled } from "./../../core/query-compiled";
2-
import { ResultExecuteSql } from "./../../core/result-execute-sql";
33
import { MapperTable } from "./../../mapper-table";
44
import { ProjectionBuilder } from "./../projection-builder";
55
import { WhereBuilder } from "./../where-builder";
66
import { Database } from "./../../definitions/database-definition";
77
import { MetadataTable } from "./../../metadata-table";
8-
import { QueryReadableBuilder } from "./query-readable-builder";
9-
import { QueryBuilder, JoinQueryBuilder } from "./query-builder";
8+
import { ResultExecuteSql } from "./../../core/result-execute-sql";
9+
import { JoinQueryBuilder, QueryBuilder } from "./query-builder";
1010
import { ExpressionOrColumn, ValueType } from "./../../core/utils";
1111
import { QueryCompilable } from "./../../core/query-compilable";
1212
import { OrderBy } from "../../core/enums/order-by";
@@ -72,7 +72,7 @@ export class Query<T> implements QueryCompilable {
7272

7373
/**
7474
* @deprecated Use `select`
75-
* @param projectionCallback
75+
* @param projectionCallback
7676
*/
7777
public projection(projectionCallback: (projection: ProjectionBuilder<T>) => void): Query<T> {
7878
this._queryBuilder.projection(projectionCallback);

src/crud/where-builder.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { LambdaMetadata } from './../core/lambda-metadata';
21
import { DatabaseHelper } from "./../database-helper";
32
import { Expression, ExpressionUtils, LambdaExpression } from "lambda-expression";
43
import { ExpressionOrColumn, Utils, ValueType, ValueTypeToParse } from "./../core/utils";
54
import { QueryCompilable } from "../core/query-compilable";
65
import { WhereCompiled } from "./where-compiled";
76
import { Condition } from "./enums/condition";
7+
import { LambdaMetadata } from "../core/lambda-metadata";
88

99
// TODO: add LambdaExpression support in WhereBuilder
1010
export class WhereBuilder<T> {
@@ -55,8 +55,8 @@ export class WhereBuilder<T> {
5555

5656
/**
5757
* @deprecated Use `equal`
58-
* @param expression
59-
* @param column
58+
* @param expression
59+
* @param column
6060
*/
6161
public equalColumn(
6262
expression: ExpressionOrColumn<T>,
@@ -235,7 +235,7 @@ export class WhereBuilder<T> {
235235
}
236236

237237
public expression(expression: LambdaExpression<T>): WhereBuilder<T> {
238-
let metadata = Utils.getLambdaMetadata(expression);
238+
const metadata = Utils.getLambdaMetadata(expression);
239239
this.buildWhereMetadata(metadata);
240240
return this;
241241
}
@@ -339,9 +339,9 @@ export class WhereBuilder<T> {
339339
column1: string,
340340
column2: string | string[],
341341
) {
342-
let conditionsArray = this._pendingConditions.concat(conditions);
342+
const conditionsArray = this._pendingConditions.concat(conditions);
343343
this._pendingConditions = [];
344-
return this.buildConditions(conditionsArray, column1, column2)
344+
return this.buildConditions(conditionsArray, column1, column2);
345345
// const pendingCondition = this._pendingCondition;
346346
// this._pendingCondition = void 0;
347347
// const appendCondition = this.checkAppendPendingCondition(condition, pendingCondition);
@@ -398,7 +398,7 @@ export class WhereBuilder<T> {
398398
column2: string | string[],
399399
): string {
400400
// new scope
401-
if (!conditions) {
401+
if (!conditions || (conditions.length === 1 && conditions[0] === void 0)) {
402402
return `(${column1})`;
403403
}
404404
switch (conditions.toString()) {

src/test/models/cliente.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { Classificacao } from './classificacao';
2-
import { BaseModel } from './base-model';
3-
import { Cidade } from './cidade';
1+
import { Classificacao } from "./classificacao";
2+
import { BaseModel } from "./base-model";
3+
import { Cidade } from "./cidade";
44

55
export class Cliente extends BaseModel<number> {
66

7-
constructor() {
8-
super(0);
9-
}
10-
117
public razaoSocial: string = "";
128
public apelido: string = "";
13-
public cidade: Cidade = new Cidade();
9+
public cidade: Cidade = new Cidade();
1410
public classificacao: Classificacao = new Classificacao();
1511
public desativo: boolean = false;
12+
13+
constructor() {
14+
super(0);
15+
}
1616
}

0 commit comments

Comments
 (0)