@sqb/builder 4.0.9 → 4.0.10

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.
Files changed (105) hide show
  1. package/dist/Serializable.d.ts +9 -0
  2. package/dist/Serializable.js +6 -0
  3. package/dist/SerializeContext.d.ts +47 -0
  4. package/dist/SerializeContext.js +138 -0
  5. package/dist/classes.d.ts +38 -0
  6. package/dist/classes.js +41 -0
  7. package/dist/enums.d.ts +84 -0
  8. package/dist/enums.js +91 -0
  9. package/dist/extensions.d.ts +4 -0
  10. package/dist/extensions.js +16 -0
  11. package/dist/helpers.d.ts +4 -0
  12. package/dist/helpers.js +31 -0
  13. package/dist/index.d.ts +20 -0
  14. package/dist/index.js +27 -0
  15. package/dist/op.initializers.d.ts +86 -0
  16. package/dist/op.initializers.js +158 -0
  17. package/dist/query/DeleteQuery.d.ts +24 -0
  18. package/dist/query/DeleteQuery.js +53 -0
  19. package/dist/query/InsertQuery.d.ts +23 -0
  20. package/dist/query/InsertQuery.js +76 -0
  21. package/dist/query/Query.d.ts +15 -0
  22. package/dist/query/Query.js +40 -0
  23. package/dist/query/ReturningQuery.d.ts +14 -0
  24. package/dist/query/ReturningQuery.js +44 -0
  25. package/dist/query/SelectQuery.d.ts +90 -0
  26. package/dist/query/SelectQuery.js +283 -0
  27. package/dist/query/UpdateQuery.d.ts +29 -0
  28. package/dist/query/UpdateQuery.js +80 -0
  29. package/dist/sql-objects/BaseField.d.ts +7 -0
  30. package/dist/sql-objects/BaseField.js +11 -0
  31. package/dist/sql-objects/CaseStatement.d.ts +42 -0
  32. package/dist/sql-objects/CaseStatement.js +85 -0
  33. package/dist/sql-objects/CountStatement.d.ts +20 -0
  34. package/dist/sql-objects/CountStatement.js +34 -0
  35. package/dist/sql-objects/Expression.d.ts +7 -0
  36. package/dist/sql-objects/Expression.js +7 -0
  37. package/dist/sql-objects/FieldExpression.d.ts +14 -0
  38. package/dist/sql-objects/FieldExpression.js +53 -0
  39. package/dist/sql-objects/GroupColumn.d.ts +8 -0
  40. package/dist/sql-objects/GroupColumn.js +38 -0
  41. package/dist/sql-objects/JoinStatement.d.ts +17 -0
  42. package/dist/sql-objects/JoinStatement.js +81 -0
  43. package/dist/sql-objects/Operator.d.ts +5 -0
  44. package/dist/sql-objects/Operator.js +7 -0
  45. package/dist/sql-objects/OrderColumn.d.ts +9 -0
  46. package/dist/sql-objects/OrderColumn.js +42 -0
  47. package/dist/sql-objects/ParamExpression.d.ts +23 -0
  48. package/dist/sql-objects/ParamExpression.js +53 -0
  49. package/dist/sql-objects/RawStatement.d.ts +9 -0
  50. package/dist/sql-objects/RawStatement.js +18 -0
  51. package/dist/sql-objects/ReturningColumn.d.ts +9 -0
  52. package/dist/sql-objects/ReturningColumn.js +32 -0
  53. package/dist/sql-objects/TableName.d.ts +11 -0
  54. package/dist/sql-objects/TableName.js +31 -0
  55. package/dist/sql-objects/operators/CompOperator.d.ts +16 -0
  56. package/dist/sql-objects/operators/CompOperator.js +87 -0
  57. package/dist/sql-objects/operators/LogicalOperator.d.ts +16 -0
  58. package/dist/sql-objects/operators/LogicalOperator.js +83 -0
  59. package/dist/sql-objects/operators/OpAnd.d.ts +5 -0
  60. package/dist/sql-objects/operators/OpAnd.js +12 -0
  61. package/dist/sql-objects/operators/OpBetween.d.ts +11 -0
  62. package/dist/sql-objects/operators/OpBetween.js +35 -0
  63. package/dist/sql-objects/operators/OpEq.d.ts +8 -0
  64. package/dist/sql-objects/operators/OpEq.js +13 -0
  65. package/dist/sql-objects/operators/OpExists.d.ts +11 -0
  66. package/dist/sql-objects/operators/OpExists.js +30 -0
  67. package/dist/sql-objects/operators/OpGt.d.ts +8 -0
  68. package/dist/sql-objects/operators/OpGt.js +13 -0
  69. package/dist/sql-objects/operators/OpGte.d.ts +8 -0
  70. package/dist/sql-objects/operators/OpGte.js +13 -0
  71. package/dist/sql-objects/operators/OpILike.d.ts +6 -0
  72. package/dist/sql-objects/operators/OpILike.js +13 -0
  73. package/dist/sql-objects/operators/OpIn.d.ts +9 -0
  74. package/dist/sql-objects/operators/OpIn.js +19 -0
  75. package/dist/sql-objects/operators/OpIs.d.ts +8 -0
  76. package/dist/sql-objects/operators/OpIs.js +13 -0
  77. package/dist/sql-objects/operators/OpIsNot.d.ts +8 -0
  78. package/dist/sql-objects/operators/OpIsNot.js +13 -0
  79. package/dist/sql-objects/operators/OpLike.d.ts +10 -0
  80. package/dist/sql-objects/operators/OpLike.js +22 -0
  81. package/dist/sql-objects/operators/OpLt.d.ts +8 -0
  82. package/dist/sql-objects/operators/OpLt.js +13 -0
  83. package/dist/sql-objects/operators/OpLte.d.ts +8 -0
  84. package/dist/sql-objects/operators/OpLte.js +13 -0
  85. package/dist/sql-objects/operators/OpNe.d.ts +8 -0
  86. package/dist/sql-objects/operators/OpNe.js +13 -0
  87. package/dist/sql-objects/operators/OpNotBetween.d.ts +6 -0
  88. package/dist/sql-objects/operators/OpNotBetween.js +13 -0
  89. package/dist/sql-objects/operators/OpNotExists.d.ts +6 -0
  90. package/dist/sql-objects/operators/OpNotExists.js +13 -0
  91. package/dist/sql-objects/operators/OpNotILike.d.ts +6 -0
  92. package/dist/sql-objects/operators/OpNotILike.js +13 -0
  93. package/dist/sql-objects/operators/OpNotIn.d.ts +6 -0
  94. package/dist/sql-objects/operators/OpNotIn.js +13 -0
  95. package/dist/sql-objects/operators/OpNotLike.d.ts +6 -0
  96. package/dist/sql-objects/operators/OpNotLike.js +13 -0
  97. package/dist/sql-objects/operators/OpOr.d.ts +5 -0
  98. package/dist/sql-objects/operators/OpOr.js +12 -0
  99. package/dist/sqlobject.initializers.d.ts +39 -0
  100. package/dist/sqlobject.initializers.js +90 -0
  101. package/dist/typeguards.d.ts +34 -0
  102. package/dist/typeguards.js +73 -0
  103. package/dist/types.d.ts +33 -0
  104. package/dist/types.js +2 -0
  105. package/package.json +2 -2
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotExists = exports.Exists = exports.IsNot = exports.Is = exports.Nilike = exports.NotILike = exports.Ilike = exports.NLike = exports.NotLike = exports.Like = exports.Nin = exports.NotIn = exports.In = exports.NotBetween = exports.Between = exports.LowerAndEqualTo = exports.Lte = exports.LowerThan = exports.Lt = exports.GreaterAnEqualTo = exports.Gte = exports.GreaterThan = exports.Gt = exports.NotEqual = exports.Ne = exports.Equal = exports.Eq = exports.Or = exports.And = exports.op = void 0;
4
+ const OpAnd_1 = require("./sql-objects/operators/OpAnd");
5
+ const OpOr_1 = require("./sql-objects/operators/OpOr");
6
+ const OpEq_1 = require("./sql-objects/operators/OpEq");
7
+ const OpGt_1 = require("./sql-objects/operators/OpGt");
8
+ const OpGte_1 = require("./sql-objects/operators/OpGte");
9
+ const OpLt_1 = require("./sql-objects/operators/OpLt");
10
+ const OpLte_1 = require("./sql-objects/operators/OpLte");
11
+ const OpBetween_1 = require("./sql-objects/operators/OpBetween");
12
+ const OpIn_1 = require("./sql-objects/operators/OpIn");
13
+ const OpIs_1 = require("./sql-objects/operators/OpIs");
14
+ const OpIsNot_1 = require("./sql-objects/operators/OpIsNot");
15
+ const OpLike_1 = require("./sql-objects/operators/OpLike");
16
+ const OpILike_1 = require("./sql-objects/operators/OpILike");
17
+ const OpNe_1 = require("./sql-objects/operators/OpNe");
18
+ const OpNotBetween_1 = require("./sql-objects/operators/OpNotBetween");
19
+ const OpNotIn_1 = require("./sql-objects/operators/OpNotIn");
20
+ const OpNotLike_1 = require("./sql-objects/operators/OpNotLike");
21
+ const OpNotILike_1 = require("./sql-objects/operators/OpNotILike");
22
+ const OpExists_1 = require("./sql-objects/operators/OpExists");
23
+ const OpNotExists_1 = require("./sql-objects/operators/OpNotExists");
24
+ // Avoids circular reference
25
+ const LogicalOperator_1 = require("./sql-objects/operators/LogicalOperator");
26
+ function And(...args) {
27
+ return new OpAnd_1.OpAnd(...args);
28
+ }
29
+ exports.And = And;
30
+ function Or(...args) {
31
+ return new OpOr_1.OpOr(...args);
32
+ }
33
+ exports.Or = Or;
34
+ function Eq(expression, value) {
35
+ return new OpEq_1.OpEq(expression, value);
36
+ }
37
+ exports.Eq = Eq;
38
+ exports.Equal = Eq;
39
+ function Ne(expression, value) {
40
+ return new OpNe_1.OpNe(expression, value);
41
+ }
42
+ exports.Ne = Ne;
43
+ exports.NotEqual = Ne;
44
+ function Gt(expression, value) {
45
+ return new OpGt_1.OpGt(expression, value);
46
+ }
47
+ exports.Gt = Gt;
48
+ exports.GreaterThan = Gt;
49
+ function Gte(expression, value) {
50
+ return new OpGte_1.OpGte(expression, value);
51
+ }
52
+ exports.Gte = Gte;
53
+ exports.GreaterAnEqualTo = Gte;
54
+ function Lt(expression, value) {
55
+ return new OpLt_1.OpLt(expression, value);
56
+ }
57
+ exports.Lt = Lt;
58
+ exports.LowerThan = Lt;
59
+ function Lte(expression, value) {
60
+ return new OpLte_1.OpLte(expression, value);
61
+ }
62
+ exports.Lte = Lte;
63
+ exports.LowerAndEqualTo = Lte;
64
+ function Between(expression, value1, value2) {
65
+ const values = Array.isArray(value1) ? value1 : [value1, value2];
66
+ return new OpBetween_1.OpBetween(expression, values);
67
+ }
68
+ exports.Between = Between;
69
+ function NotBetween(expression, value1, value2) {
70
+ const values = Array.isArray(value1) ? value1 : [value1, value2];
71
+ return new OpNotBetween_1.OpNotBetween(expression, values);
72
+ }
73
+ exports.NotBetween = NotBetween;
74
+ function In(expression, value) {
75
+ return new OpIn_1.OpIn(expression, value);
76
+ }
77
+ exports.In = In;
78
+ function NotIn(expression, value) {
79
+ return new OpNotIn_1.OpNotIn(expression, value);
80
+ }
81
+ exports.NotIn = NotIn;
82
+ exports.Nin = NotIn;
83
+ function Like(expression, value) {
84
+ return new OpLike_1.OpLike(expression, value);
85
+ }
86
+ exports.Like = Like;
87
+ function NotLike(expression, value) {
88
+ return new OpNotLike_1.OpNotLike(expression, value);
89
+ }
90
+ exports.NotLike = NotLike;
91
+ exports.NLike = NotLike;
92
+ function Ilike(expression, value) {
93
+ return new OpILike_1.OpILike(expression, value);
94
+ }
95
+ exports.Ilike = Ilike;
96
+ function NotILike(expression, value) {
97
+ return new OpNotILike_1.OpNotILike(expression, value);
98
+ }
99
+ exports.NotILike = NotILike;
100
+ exports.Nilike = NotILike;
101
+ function Is(expression, value) {
102
+ return new OpIs_1.OpIs(expression, value);
103
+ }
104
+ exports.Is = Is;
105
+ function IsNot(expression, value) {
106
+ return new OpIsNot_1.OpIsNot(expression, value);
107
+ }
108
+ exports.IsNot = IsNot;
109
+ function Exists(expression) {
110
+ return new OpExists_1.OpExists(expression);
111
+ }
112
+ exports.Exists = Exists;
113
+ function NotExists(expression) {
114
+ return new OpNotExists_1.OpNotExists(expression);
115
+ }
116
+ exports.NotExists = NotExists;
117
+ const op = {
118
+ and: And,
119
+ or: Or,
120
+ eq: Eq,
121
+ '=': Eq,
122
+ ne: Ne,
123
+ '!=': Ne,
124
+ gt: Gt,
125
+ '>': Gt,
126
+ gte: Gte,
127
+ '>=': Gte,
128
+ lt: Lt,
129
+ '<': Lt,
130
+ lte: Lte,
131
+ '<=': Lte,
132
+ between: Between,
133
+ btw: Between,
134
+ notBetween: NotBetween,
135
+ nbtw: NotBetween,
136
+ '!between': NotBetween,
137
+ '!btw': NotBetween,
138
+ in: In,
139
+ notIn: NotIn,
140
+ nin: NotIn,
141
+ '!in': NotIn,
142
+ like: Like,
143
+ notLike: NotLike,
144
+ nlike: NotLike,
145
+ '!like': NotLike,
146
+ ilike: Ilike,
147
+ notILike: NotILike,
148
+ nilike: NotILike,
149
+ '!ilike': NotILike,
150
+ is: Is,
151
+ isNot: IsNot,
152
+ '!is': IsNot,
153
+ exists: Exists,
154
+ notExists: NotExists,
155
+ '!exists': NotExists
156
+ };
157
+ exports.op = op;
158
+ Object.assign(LogicalOperator_1.WrapOps, op);
@@ -0,0 +1,24 @@
1
+ import { Query } from './Query';
2
+ import { RawStatement } from '../sql-objects/RawStatement';
3
+ import { SerializationType } from '../enums';
4
+ import { TableName } from '../sql-objects/TableName';
5
+ import { LogicalOperator } from '../sql-objects/operators/LogicalOperator';
6
+ import { SerializeContext } from '../SerializeContext';
7
+ export declare class DeleteQuery extends Query {
8
+ _table: TableName | RawStatement;
9
+ _where?: LogicalOperator;
10
+ constructor(tableName: string | RawStatement);
11
+ get _type(): SerializationType;
12
+ /**
13
+ * Defines "where" part of query
14
+ */
15
+ where(...operator: any[]): this;
16
+ /**
17
+ * Performs serialization
18
+ */
19
+ _serialize(ctx: SerializeContext): string;
20
+ /**
21
+ *
22
+ */
23
+ _serializeWhere(ctx: SerializeContext): string;
24
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteQuery = void 0;
4
+ const Query_1 = require("./Query");
5
+ const enums_1 = require("../enums");
6
+ const TableName_1 = require("../sql-objects/TableName");
7
+ const OpAnd_1 = require("../sql-objects/operators/OpAnd");
8
+ const typeguards_1 = require("../typeguards");
9
+ class DeleteQuery extends Query_1.Query {
10
+ constructor(tableName) {
11
+ super();
12
+ if (!tableName || !(typeof tableName === 'string' || (0, typeguards_1.isRawStatement)(tableName)))
13
+ throw new TypeError('String or Raw instance required as first argument (tableName) for UpdateQuery');
14
+ this._table = typeof tableName === 'string' ? new TableName_1.TableName(tableName) : tableName;
15
+ }
16
+ get _type() {
17
+ return enums_1.SerializationType.DELETE_QUERY;
18
+ }
19
+ /**
20
+ * Defines "where" part of query
21
+ */
22
+ where(...operator) {
23
+ this._where = this._where || new OpAnd_1.OpAnd();
24
+ this._where.add(...operator);
25
+ return this;
26
+ }
27
+ /**
28
+ * Performs serialization
29
+ */
30
+ _serialize(ctx) {
31
+ const o = {
32
+ table: this._table._serialize(ctx),
33
+ where: this._serializeWhere(ctx)
34
+ };
35
+ let out = 'delete from ' + o.table;
36
+ if (o.where)
37
+ out += '\n' + o.where;
38
+ return out;
39
+ }
40
+ /**
41
+ *
42
+ */
43
+ _serializeWhere(ctx) {
44
+ if (!this._where)
45
+ return '';
46
+ const s = this._where._serialize(ctx);
47
+ return ctx.serialize(enums_1.SerializationType.CONDITIONS_BLOCK, s, () => {
48
+ /* istanbul ignore next */
49
+ return s ? 'where ' + s : '';
50
+ });
51
+ }
52
+ }
53
+ exports.DeleteQuery = DeleteQuery;
@@ -0,0 +1,23 @@
1
+ import { ReturningQuery } from './ReturningQuery';
2
+ import { SerializationType } from '../enums';
3
+ import { TableName } from '../sql-objects/TableName';
4
+ import type { RawStatement } from '../sql-objects/RawStatement';
5
+ import { SerializeContext } from '../SerializeContext';
6
+ export declare class InsertQuery extends ReturningQuery {
7
+ _table: TableName | RawStatement;
8
+ _input: any;
9
+ constructor(tableName: string | RawStatement, input: any);
10
+ get _type(): SerializationType;
11
+ /**
12
+ * Performs serialization
13
+ */
14
+ _serialize(ctx: SerializeContext): string;
15
+ /**
16
+ *
17
+ */
18
+ protected __serializeColumns(ctx: SerializeContext): string;
19
+ /**
20
+ *
21
+ */
22
+ protected __serializeValues(ctx: SerializeContext): string;
23
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InsertQuery = void 0;
4
+ const ReturningQuery_1 = require("./ReturningQuery");
5
+ const enums_1 = require("../enums");
6
+ const TableName_1 = require("../sql-objects/TableName");
7
+ const typeguards_1 = require("../typeguards");
8
+ const helpers_1 = require("../helpers");
9
+ class InsertQuery extends ReturningQuery_1.ReturningQuery {
10
+ constructor(tableName, input) {
11
+ super();
12
+ if (!tableName || !(typeof tableName === 'string' || (0, typeguards_1.isRawStatement)(tableName)))
13
+ throw new TypeError('String or Raw instance required as first argument (tableName) for InsertQuery');
14
+ if (!input || !((typeof input === 'object' && !Array.isArray(input)) ||
15
+ input.isSelect))
16
+ throw new TypeError('Object or SelectQuery instance required as second argument (input) for InsertQuery');
17
+ this._table = typeof tableName === 'string' ? new TableName_1.TableName(tableName) : tableName;
18
+ this._input = input;
19
+ }
20
+ get _type() {
21
+ return enums_1.SerializationType.INSERT_QUERY;
22
+ }
23
+ /**
24
+ * Performs serialization
25
+ */
26
+ _serialize(ctx) {
27
+ const o = {
28
+ table: this._table._serialize(ctx),
29
+ columns: this.__serializeColumns(ctx),
30
+ values: this.__serializeValues(ctx),
31
+ returning: this.__serializeReturning(ctx)
32
+ };
33
+ let out = 'insert into ' + o.table + '\n\t(' +
34
+ o.columns + ')\n\bvalues\n\t(' + o.values + ')\b';
35
+ if (o.returning)
36
+ out += '\n' + o.returning;
37
+ return out;
38
+ }
39
+ /**
40
+ *
41
+ */
42
+ __serializeColumns(ctx) {
43
+ let arr;
44
+ if ((0, typeguards_1.isSelectQuery)(this._input)) {
45
+ arr = [];
46
+ const cols = this._input._columns;
47
+ if (cols) {
48
+ for (const col of cols) {
49
+ if (col._alias)
50
+ arr.push(col._alias);
51
+ else if (col._field)
52
+ arr.push(col._field);
53
+ }
54
+ }
55
+ }
56
+ else
57
+ arr = Object.keys(this._input);
58
+ return ctx.serialize(enums_1.SerializationType.INSERT_QUERY_COLUMNS, arr, () => (0, helpers_1.printArray)(arr));
59
+ }
60
+ /**
61
+ *
62
+ */
63
+ __serializeValues(ctx) {
64
+ if ((0, typeguards_1.isSerializable)(this._input))
65
+ return this._input._serialize(ctx);
66
+ const arr = [];
67
+ const allValues = this._input;
68
+ for (const n of Object.keys(allValues)) {
69
+ const s = ctx.anyToSQL(allValues[n]);
70
+ if (s)
71
+ arr.push((0, typeguards_1.isSelectQuery)(allValues[n]) ? '(' + s + ')' : s);
72
+ }
73
+ return ctx.serialize(enums_1.SerializationType.INSERT_QUERY_VALUES, arr, () => (0, helpers_1.printArray)(arr));
74
+ }
75
+ }
76
+ exports.InsertQuery = InsertQuery;
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { Serializable } from '../Serializable';
4
+ import { GenerateOptions, GenerateResult } from '../types';
5
+ export declare interface Query extends EventEmitter {
6
+ }
7
+ export declare abstract class Query extends Serializable {
8
+ protected _params?: Record<string, any>;
9
+ constructor();
10
+ /**
11
+ * Generates Sql script
12
+ */
13
+ generate(options?: GenerateOptions): GenerateResult;
14
+ values(obj: any): this;
15
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Query = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const events_1 = require("events");
6
+ const putil_merge_1 = tslib_1.__importDefault(require("putil-merge"));
7
+ const putil_flattentext_1 = tslib_1.__importDefault(require("putil-flattentext"));
8
+ const Serializable_1 = require("../Serializable");
9
+ const SerializeContext_1 = require("../SerializeContext");
10
+ class Query extends Serializable_1.Serializable {
11
+ constructor() {
12
+ super();
13
+ events_1.EventEmitter.call(this);
14
+ }
15
+ /**
16
+ * Generates Sql script
17
+ */
18
+ generate(options) {
19
+ const ctx = new SerializeContext_1.SerializeContext(options);
20
+ if (this._params)
21
+ ctx.params = { ...ctx.params, ...this._params };
22
+ ctx.serializeHooks = this.listeners('serialize');
23
+ /* generate output */
24
+ const sql = this._serialize(ctx);
25
+ return {
26
+ sql: (0, putil_flattentext_1.default)(sql, { noWrap: !ctx.prettyPrint }),
27
+ params: ctx.preparedParams,
28
+ paramOptions: ctx.paramOptions,
29
+ returningFields: ctx.returningFields
30
+ };
31
+ }
32
+ values(obj) {
33
+ if (typeof obj !== 'object' || Array.isArray(obj))
34
+ throw new TypeError('Invalid argument');
35
+ this._params = obj;
36
+ return this;
37
+ }
38
+ }
39
+ exports.Query = Query;
40
+ (0, putil_merge_1.default)(Query.prototype, events_1.EventEmitter.prototype, { descriptor: true });
@@ -0,0 +1,14 @@
1
+ import { Query } from './Query';
2
+ import { ReturningColumn } from '../sql-objects/ReturningColumn';
3
+ import { SerializeContext } from '../SerializeContext';
4
+ export declare abstract class ReturningQuery extends Query {
5
+ _returningColumns?: ReturningColumn[];
6
+ /**
7
+ *
8
+ */
9
+ returning(...columns: string[]): this;
10
+ /**
11
+ *
12
+ */
13
+ protected __serializeReturning(ctx: SerializeContext): string;
14
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReturningQuery = void 0;
4
+ const Query_1 = require("./Query");
5
+ const enums_1 = require("../enums");
6
+ const ReturningColumn_1 = require("../sql-objects/ReturningColumn");
7
+ const helpers_1 = require("../helpers");
8
+ class ReturningQuery extends Query_1.Query {
9
+ /**
10
+ *
11
+ */
12
+ returning(...columns) {
13
+ if (!columns)
14
+ return this;
15
+ // noinspection JSMismatchedCollectionQueryUpdate
16
+ this._returningColumns = columns.length ?
17
+ columns.reduce((a, v) => {
18
+ if (v)
19
+ a.push(new ReturningColumn_1.ReturningColumn(v));
20
+ return a;
21
+ }, []) : undefined;
22
+ return this;
23
+ }
24
+ /**
25
+ *
26
+ */
27
+ __serializeReturning(ctx) {
28
+ if (!(this._returningColumns && this._returningColumns.length))
29
+ return '';
30
+ const arr = [];
31
+ ctx.returningFields = [];
32
+ for (const t of this._returningColumns) {
33
+ const s = t._serialize(ctx);
34
+ /* istanbul ignore else */
35
+ if (s)
36
+ arr.push(s);
37
+ }
38
+ return ctx.serialize(enums_1.SerializationType.RETURNING_BLOCK, arr, () => {
39
+ const s = (0, helpers_1.printArray)(arr);
40
+ return s ? 'returning ' + s : '';
41
+ });
42
+ }
43
+ }
44
+ exports.ReturningQuery = ReturningQuery;
@@ -0,0 +1,90 @@
1
+ import { Query } from './Query';
2
+ import { RawStatement } from '../sql-objects/RawStatement';
3
+ import { SerializationType } from '../enums';
4
+ import { JoinStatement } from '../sql-objects/JoinStatement';
5
+ import { LogicalOperator } from '../sql-objects/operators/LogicalOperator';
6
+ import { GroupColumn } from '../sql-objects/GroupColumn';
7
+ import { OrderColumn } from '../sql-objects/OrderColumn';
8
+ import { Serializable } from '../Serializable';
9
+ import { SerializeContext } from '../SerializeContext';
10
+ export declare class SelectQuery extends Query {
11
+ _tables?: Serializable[];
12
+ _columns?: Serializable[];
13
+ _joins?: JoinStatement[];
14
+ _where?: LogicalOperator;
15
+ _groupBy?: (GroupColumn | RawStatement)[];
16
+ _orderBy?: (OrderColumn | RawStatement)[];
17
+ _limit?: number;
18
+ _offset?: number;
19
+ _alias?: string;
20
+ _distinct?: boolean;
21
+ constructor(...column: (string | string[] | Serializable)[]);
22
+ get _type(): SerializationType;
23
+ /**
24
+ * Adds columns to query.
25
+ */
26
+ addColumn(...column: (string | string[] | Serializable)[]): this;
27
+ /**
28
+ * Defines "from" part of query.
29
+ */
30
+ from(...table: (string | RawStatement | SelectQuery)[]): this;
31
+ /**
32
+ * Adds "join" statements to query
33
+ */
34
+ join(...join: JoinStatement[]): this;
35
+ /**
36
+ * Defines "where" part of query
37
+ */
38
+ where(...condition: (Serializable | Object)[]): this;
39
+ /**
40
+ * Defines "where" part of query
41
+ */
42
+ groupBy(...field: (string | RawStatement)[]): this;
43
+ /**
44
+ * Defines "order by" part of query.
45
+ */
46
+ orderBy(...field: (string | RawStatement)[]): this;
47
+ /**
48
+ * Sets alias for sub-select queries
49
+ */
50
+ as(alias: any): this;
51
+ /**
52
+ * Sets limit for query
53
+ */
54
+ limit(limit: number): this;
55
+ /**
56
+ * Sets offset for query
57
+ */
58
+ offset(offset: number): this;
59
+ /**
60
+ * Enables distinct mode
61
+ */
62
+ distinct(): this;
63
+ onFetch(listener: (...args: any[]) => void): this;
64
+ onceFetch(listener: (...args: any[]) => void): this;
65
+ /**
66
+ * Performs serialization
67
+ */
68
+ _serialize(ctx: SerializeContext): string;
69
+ /**
70
+ *
71
+ */
72
+ protected __serializeSelectColumns(ctx: SerializeContext): string;
73
+ /**
74
+ *
75
+ */
76
+ protected __serializeFrom(ctx: SerializeContext): string;
77
+ /**
78
+ *
79
+ */
80
+ protected __serializeJoins(ctx: SerializeContext): string;
81
+ /**
82
+ *
83
+ */
84
+ protected __serializeWhere(ctx: SerializeContext): string;
85
+ /**
86
+ *
87
+ */
88
+ protected __serializeGroupColumns(ctx: SerializeContext): string;
89
+ protected __serializeOrderColumns(ctx: SerializeContext): string;
90
+ }