Skip to content

Commit a064e9b

Browse files
committed
v.0.0.29
1 parent c85ccf3 commit a064e9b

13 files changed

Lines changed: 110 additions & 103 deletions

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "database-builder",
3-
"version": "0.0.28",
3+
"version": "0.0.29",
44
"description": "Library to assist in creating and maintaining SQL commands.",
55
"main": "./src/index.js",
66
"types": "./src/index.d.ts",
@@ -13,7 +13,7 @@
1313
},
1414
"dependencies": {
1515
"moment": ">=2.22.0",
16-
"lambda-expression": ">=0.1.2"
16+
"lambda-expression": ">=0.1.3"
1717
},
1818
"devDependencies": {
1919
"@types/chai": "^4.1.1",

src/core/columns-base-builder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export abstract class ColumnsBaseBuilder<
3333
return this.getInstance();
3434
}
3535

36-
public set(expression: ExpressionOrColumn<T>): TThis {
36+
public set<TReturn extends ValueTypeToParse>(expression: ExpressionOrColumn<TReturn, T>): TThis {
3737
return this.setColumn(
3838
Utils.getColumn(expression),
3939
Utils.getType(this.metadata.instance, expression),

src/core/columns-values-builder.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { MetadataTable } from "./../metadata-table";
22
import { ExpressionOrColumn, Utils, ValueTypeToParse } from "./utils";
3-
import { Expression } from "lambda-expression";
43
import { ColumnsBaseBuilder } from "./columns-base-builder";
54
import { Column } from "./column";
65
import { FieldType } from "./enums/field-type";
@@ -26,15 +25,15 @@ export abstract class ColumnsValuesBuilder<
2625
return this.getInstance();
2726
}
2827

29-
public setValue(expression: ExpressionOrColumn<T>, value: ValueTypeToParse): TThis {
28+
public setValue<TReturn extends ValueTypeToParse>(expression: ExpressionOrColumn<TReturn, T>, value: TReturn): TThis {
3029
return this.setColumnValue(
3130
Utils.getColumn(expression),
3231
value,
3332
Utils.getType(value),
3433
);
3534
}
3635

37-
public set(expression: ExpressionOrColumn<T>): TThis {
36+
public set<TReturn extends ValueTypeToParse>(expression: ExpressionOrColumn<TReturn, T>): TThis {
3837
return this.setValue(
3938
expression,
4039
this.getValueByExpression(expression),
@@ -55,7 +54,7 @@ export abstract class ColumnsValuesBuilder<
5554

5655
protected abstract columnFormat(column: Column): string;
5756

58-
private getValueByExpression(expression: ExpressionOrColumn<T>) {
57+
private getValueByExpression<TReturn>(expression: ExpressionOrColumn<TReturn, T>): TReturn {
5958
return Utils.getValue(this.modelToSave, expression);
6059
}
6160
}

src/core/projections-helper.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,72 +39,72 @@ export class ProjectionsHelper<T> {
3939
alias, projectionsCompiled.params));
4040
}
4141

42-
public sum(
43-
expression?: ExpressionOrColumn<T>,
42+
public sum<TReturn>(
43+
expression?: ExpressionOrColumn<TReturn, T>,
4444
alias: string = "",
4545
args?: any[]
4646
): ProjectionsHelper<T> {
4747
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Sum], alias, args));
4848
}
4949

50-
public max(
51-
expression?: ExpressionOrColumn<T>,
50+
public max<TReturn>(
51+
expression?: ExpressionOrColumn<TReturn, T>,
5252
alias: string = "",
5353
args?: any[]
5454
): ProjectionsHelper<T> {
5555
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Max], alias, args));
5656
}
5757

58-
public min(
59-
expression?: ExpressionOrColumn<T>,
58+
public min<TReturn>(
59+
expression?: ExpressionOrColumn<TReturn, T>,
6060
alias: string = "",
6161
args?: any[]
6262
): ProjectionsHelper<T> {
6363
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Min], alias, args));
6464
}
6565

66-
public avg(
67-
expression?: ExpressionOrColumn<T>,
66+
public avg<TReturn>(
67+
expression?: ExpressionOrColumn<TReturn, T>,
6868
alias: string = "",
6969
args?: any[]
7070
): ProjectionsHelper<T> {
7171
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Avg], alias, args));
7272
}
7373

74-
public count(
75-
expression?: ExpressionOrColumn<T>,
74+
public count<TReturn>(
75+
expression?: ExpressionOrColumn<TReturn, T>,
7676
alias: string = "",
7777
args?: any[]
7878
): ProjectionsHelper<T> {
7979
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Count], alias, args));
8080
}
8181

82-
public cast(
83-
expression?: ExpressionOrColumn<T>,
82+
public cast<TReturn>(
83+
expression?: ExpressionOrColumn<TReturn, T>,
8484
alias: string = "",
8585
args?: any[]
8686
): ProjectionsHelper<T> {
8787
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Cast], alias, args));
8888
}
8989

90-
public distinct(
91-
expression?: ExpressionOrColumn<T>,
90+
public distinct<TReturn>(
91+
expression?: ExpressionOrColumn<TReturn, T>,
9292
alias: string = "",
9393
args?: any[]
9494
): ProjectionsHelper<T> {
9595
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Distinct], alias, args));
9696
}
9797

98-
public round(
99-
expression?: ExpressionOrColumn<T>,
98+
public round<TReturn>(
99+
expression?: ExpressionOrColumn<TReturn, T>,
100100
alias: string = "",
101101
args?: any[]
102102
): ProjectionsHelper<T> {
103103
return this.getResult(this._projectionsUtils.apply(expression, [Projection.Round], alias, args));
104104
}
105105

106-
public coalesce(
107-
expression?: ExpressionOrColumn<T>,
106+
public coalesce<TReturn>(
107+
expression?: ExpressionOrColumn<TReturn, T>,
108108
alias: string = "",
109109
args?: any[]
110110
): ProjectionsHelper<T> {

src/core/projections-utils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export class ProjectionsUtils<T> {
1616
) {
1717
}
1818

19-
public apply(
20-
expression?: ExpressionOrColumn<T>,
19+
public apply<TReturn>(
20+
expression?: ExpressionOrColumn<TReturn, T>,
2121
projections: Projection[] = [],
2222
alias?: string,
2323
args?: any[]
@@ -35,8 +35,8 @@ export class ProjectionsUtils<T> {
3535
this.addAliasTable(column), alias, args);
3636
}
3737

38-
private _apply(
39-
expression: ExpressionOrColumn<T>,
38+
private _apply<TReturn>(
39+
expression: ExpressionOrColumn<TReturn, T>,
4040
projections: Projection[] = [],
4141
alias?: string,
4242
args?: any[]
@@ -47,8 +47,8 @@ export class ProjectionsUtils<T> {
4747
);
4848
}
4949

50-
private checkApply(
51-
expression?: ExpressionOrColumn<T>,
50+
private checkApply<TReturn>(
51+
expression?: ExpressionOrColumn<TReturn, T>,
5252
projections: Projection[] = [],
5353
alias?: string,
5454
args?: any[]

src/core/row-result.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@ export class RowResult<T> {
66

77
}
88

9-
public get(expression: ExpressionOrColumn<T>): any {
9+
public get<TReturn>(expression: ExpressionOrColumn<TReturn, T>): TReturn {
1010
return Utils.getValue(this._valueT, expression);
1111
}
1212

13-
public coalesce(expression: ExpressionOrColumn<T>, defaultValue: any) {
13+
public coalesce<TReturn>(expression: ExpressionOrColumn<TReturn, T>, defaultValue: TReturn) {
1414
const value = this.get(expression);
1515
// tslint:disable-next-line:triple-equals
1616
return value == void 0 ? defaultValue : value;
1717
}
18+
19+
// public coalesceTTT<R>(expression: ExpressionOrColumnTTT<T, R>, defaultValue: R) {
20+
// const value = this.get(expression);
21+
// // tslint:disable-next-line:triple-equals
22+
// return value == void 0 ? defaultValue : value;
23+
// }
1824
}

src/core/utils.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ValueTypeToParse } from "./utils";
44
import { WhereBuilder } from "./../crud/where-builder";
55
import { DatabaseHelper } from "./../database-helper";
66
import { ProjectionBuilder } from "./../crud/projection-builder";
7-
import { Expression, ExpressionUtils, LambdaColumnMetadata, LambdaExpression } from "lambda-expression";
7+
import { Expression, ExpressionUtils, LambdaColumnMetadata, LambdaExpression, ReturnExpression } from "lambda-expression";
88
import { LambdaMetadata } from "./lambda-metadata";
99
import { ExpressionOrColumnEnum } from "./enums/expression-or-column-enum";
1010
import { FieldType } from "./enums/field-type";
@@ -22,7 +22,7 @@ export type ValueTypeToParse = ValueType | moment.Moment | Date | object;
2222

2323
export type TypeOrString<T> = (new () => T) | string;
2424

25-
export type ExpressionOrColumn<T> = Expression<T> | string;
25+
export type ExpressionOrColumn<TReturn, T> = ReturnExpression<TReturn, T> | string;
2626

2727
export type TypeWhere<T> = Expression<T> | ValueTypeToParse | ColumnRef | ProjectionsHelper<T>;
2828

@@ -123,8 +123,8 @@ export class Utils {
123123
return instance instanceof PlanRef;
124124
}
125125

126-
public static expressionOrColumn<T>(
127-
value: ExpressionOrColumn<T>
126+
public static expressionOrColumn<TReturn, T>(
127+
value: ExpressionOrColumn<TReturn, T>
128128
): ExpressionOrColumnEnum {
129129
return this.isString(value)
130130
? ExpressionOrColumnEnum.Column
@@ -147,7 +147,7 @@ export class Utils {
147147
return this.isString(param) ? param as string : (param as (new () => T)).name;
148148
}
149149

150-
public static getColumn<T>(expression: ExpressionOrColumn<T>): string {
150+
public static getColumn<TReturn, T>(expression: ExpressionOrColumn<TReturn, T>): string {
151151
const type = this.expressionOrColumn(expression);
152152
switch (type) {
153153
case (ExpressionOrColumnEnum.Expression):
@@ -197,7 +197,7 @@ export class Utils {
197197
return new ProjectionCompiled(expression + "");
198198
}
199199

200-
public static getValue<T>(instance: any, expression: ExpressionOrColumn<T>): any {
200+
public static getValue<TReturn, T>(instance: any, expression: ExpressionOrColumn<TReturn, T>): TReturn {
201201
return this.expressionOrColumn(expression) === ExpressionOrColumnEnum.Expression
202202
? this.getExpressionUtils().getValueByExpression(instance, expression as Expression<T>)
203203
: this.getExpressionUtils().getValue(instance, expression as string);
@@ -208,8 +208,8 @@ export class Utils {
208208
}
209209

210210
public static getType(instance: ValueTypeToParse): FieldType;
211-
public static getType<T>(instance: any, expression: ExpressionOrColumn<T>): FieldType;
212-
public static getType<T>(instance: any, expression?: ExpressionOrColumn<T>): FieldType {
211+
public static getType<TReturn extends ValueTypeToParse, T>(instance: any, expression: ExpressionOrColumn<TReturn, T>): FieldType;
212+
public static getType<TReturn extends ValueTypeToParse, T>(instance: any, expression?: ExpressionOrColumn<TReturn, T>): FieldType {
213213
if (expression) {
214214
return this.getTypeByValue(this.getValue(instance, expression));
215215
}

0 commit comments

Comments
 (0)