myorm_pg 1.0.0

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 (82) hide show
  1. package/lib/Index.d.ts +29 -0
  2. package/lib/Index.d.ts.map +1 -0
  3. package/lib/Index.js +52 -0
  4. package/lib/Index.js.map +1 -0
  5. package/lib/core/decorators/SchemasDecorators.d.ts +42 -0
  6. package/lib/core/decorators/SchemasDecorators.d.ts.map +1 -0
  7. package/lib/core/decorators/SchemasDecorators.js +81 -0
  8. package/lib/core/decorators/SchemasDecorators.js.map +1 -0
  9. package/lib/core/design/Type.d.ts +37 -0
  10. package/lib/core/design/Type.d.ts.map +1 -0
  11. package/lib/core/design/Type.js +132 -0
  12. package/lib/core/design/Type.js.map +1 -0
  13. package/lib/core/enums/DBTypes.d.ts +19 -0
  14. package/lib/core/enums/DBTypes.d.ts.map +1 -0
  15. package/lib/core/enums/DBTypes.js +23 -0
  16. package/lib/core/enums/DBTypes.js.map +1 -0
  17. package/lib/core/enums/RelationType.d.ts +7 -0
  18. package/lib/core/enums/RelationType.d.ts.map +1 -0
  19. package/lib/core/enums/RelationType.js +11 -0
  20. package/lib/core/enums/RelationType.js.map +1 -0
  21. package/lib/core/exceptions/ConnectionFailException.d.ts +5 -0
  22. package/lib/core/exceptions/ConnectionFailException.d.ts.map +1 -0
  23. package/lib/core/exceptions/ConnectionFailException.js +13 -0
  24. package/lib/core/exceptions/ConnectionFailException.js.map +1 -0
  25. package/lib/core/exceptions/Exception.d.ts +5 -0
  26. package/lib/core/exceptions/Exception.d.ts.map +1 -0
  27. package/lib/core/exceptions/Exception.js +10 -0
  28. package/lib/core/exceptions/Exception.js.map +1 -0
  29. package/lib/core/exceptions/InvalidOperationException.d.ts +6 -0
  30. package/lib/core/exceptions/InvalidOperationException.d.ts.map +1 -0
  31. package/lib/core/exceptions/InvalidOperationException.js +14 -0
  32. package/lib/core/exceptions/InvalidOperationException.js.map +1 -0
  33. package/lib/core/exceptions/NotImplementedException.d.ts +5 -0
  34. package/lib/core/exceptions/NotImplementedException.d.ts.map +1 -0
  35. package/lib/core/exceptions/NotImplementedException.js +13 -0
  36. package/lib/core/exceptions/NotImplementedException.js.map +1 -0
  37. package/lib/core/exceptions/QueryFailException.d.ts +6 -0
  38. package/lib/core/exceptions/QueryFailException.d.ts.map +1 -0
  39. package/lib/core/exceptions/QueryFailException.js +14 -0
  40. package/lib/core/exceptions/QueryFailException.js.map +1 -0
  41. package/lib/core/exceptions/TypeNotSuportedException.d.ts +5 -0
  42. package/lib/core/exceptions/TypeNotSuportedException.d.ts.map +1 -0
  43. package/lib/core/exceptions/TypeNotSuportedException.js +13 -0
  44. package/lib/core/exceptions/TypeNotSuportedException.js.map +1 -0
  45. package/lib/core/objects/interfaces/IDBConnection.d.ts +13 -0
  46. package/lib/core/objects/interfaces/IDBConnection.d.ts.map +1 -0
  47. package/lib/core/objects/interfaces/IDBConnection.js +3 -0
  48. package/lib/core/objects/interfaces/IDBConnection.js.map +1 -0
  49. package/lib/core/objects/interfaces/IDBContext.d.ts +8 -0
  50. package/lib/core/objects/interfaces/IDBContext.d.ts.map +1 -0
  51. package/lib/core/objects/interfaces/IDBContext.js +3 -0
  52. package/lib/core/objects/interfaces/IDBContext.js.map +1 -0
  53. package/lib/core/objects/interfaces/IDBManager.d.ts +12 -0
  54. package/lib/core/objects/interfaces/IDBManager.d.ts.map +1 -0
  55. package/lib/core/objects/interfaces/IDBManager.js +3 -0
  56. package/lib/core/objects/interfaces/IDBManager.js.map +1 -0
  57. package/lib/core/objects/interfaces/IDBSet.d.ts +16 -0
  58. package/lib/core/objects/interfaces/IDBSet.d.ts.map +1 -0
  59. package/lib/core/objects/interfaces/IDBSet.js +3 -0
  60. package/lib/core/objects/interfaces/IDBSet.js.map +1 -0
  61. package/lib/core/objects/interfaces/IStatement.d.ts +15 -0
  62. package/lib/core/objects/interfaces/IStatement.d.ts.map +1 -0
  63. package/lib/core/objects/interfaces/IStatement.js +14 -0
  64. package/lib/core/objects/interfaces/IStatement.js.map +1 -0
  65. package/lib/implementations/PGDBConnection.d.ts +18 -0
  66. package/lib/implementations/PGDBConnection.d.ts.map +1 -0
  67. package/lib/implementations/PGDBConnection.js +98 -0
  68. package/lib/implementations/PGDBConnection.js.map +1 -0
  69. package/lib/implementations/PGDBContext.d.ts +17 -0
  70. package/lib/implementations/PGDBContext.d.ts.map +1 -0
  71. package/lib/implementations/PGDBContext.js +57 -0
  72. package/lib/implementations/PGDBContext.js.map +1 -0
  73. package/lib/implementations/PGDBManager.d.ts +26 -0
  74. package/lib/implementations/PGDBManager.d.ts.map +1 -0
  75. package/lib/implementations/PGDBManager.js +178 -0
  76. package/lib/implementations/PGDBManager.js.map +1 -0
  77. package/lib/implementations/PGDBSet.d.ts +37 -0
  78. package/lib/implementations/PGDBSet.d.ts.map +1 -0
  79. package/lib/implementations/PGDBSet.js +618 -0
  80. package/lib/implementations/PGDBSet.js.map +1 -0
  81. package/package.json +31 -0
  82. package/readme.md +316 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBManager.js","sourceRoot":"","sources":["../../src/implementations/PGDBManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import IDBSet from "../core/objects/interfaces/IDBSet";
2
+ import IStatement from "../core/objects/interfaces/IStatement";
3
+ import PGDBContext from "./PGDBContext";
4
+ export default class PGDBSet<T extends object> implements IDBSet<T> {
5
+ private _type;
6
+ private _table;
7
+ private _maps;
8
+ private _manager;
9
+ private _context;
10
+ private _statements;
11
+ private _ordering;
12
+ private _includes;
13
+ private _limit?;
14
+ constructor(cTor: {
15
+ new (...args: any[]): T;
16
+ }, context: PGDBContext);
17
+ AddAsync(obj: T): Promise<T>;
18
+ UpdateAsync(obj: T): Promise<T>;
19
+ private UpdateObjectAsync;
20
+ DeleteAsync(obj: T): Promise<T>;
21
+ Where<K extends keyof T>(statement: IStatement<T, K>): IDBSet<T>;
22
+ And<K extends keyof T>(statement: IStatement<T, K>): IDBSet<T>;
23
+ Or<K extends keyof T>(statement: IStatement<T, K>): IDBSet<T>;
24
+ OrderBy<K extends keyof T>(key: K): IDBSet<T>;
25
+ Join<K extends keyof T>(key: K): IDBSet<T>;
26
+ OrderDescendingBy<K extends keyof T>(key: K): IDBSet<T>;
27
+ Limit(limit: number): IDBSet<T>;
28
+ ToListAsync(): Promise<T[]>;
29
+ FirstOrDefaultAsync(): Promise<T | undefined>;
30
+ private CreatePromisse;
31
+ private CreateValueStatement;
32
+ private EvaluateStatement;
33
+ private EvaluateOrderBy;
34
+ private GetOperators;
35
+ private Reset;
36
+ }
37
+ //# sourceMappingURL=PGDBSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBSet.d.ts","sourceRoot":"","sources":["../../src/implementations/PGDBSet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mCAAmC,CAAC;AAIvD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAO/D,OAAO,WAAW,MAAM,eAAe,CAAC;AAKxC,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,SAAS,MAAM,CAAG,YAAW,MAAM,CAAC,CAAC,CAAC;IAGhE,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,IAAI,EAAG;QAAE,KAAI,GAAG,IAAI,EAAG,GAAG,EAAE,GAAI,CAAC,CAAA;KAAC,EAAE,OAAO,EAAG,WAAW;IAW9D,QAAQ,CAAC,GAAG,EAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA0NvB,WAAW,CAAC,GAAG,EAAG,CAAC,GAAI,OAAO,CAAC,CAAC,CAAC;IAI9C,OAAO,CAAC,iBAAiB;IAsOzB,WAAW,CAAC,GAAG,EAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmChC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,EAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAiBjE,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,EAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAgB/D,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,EAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAgB9D,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAY9C,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAW3C,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAYxD,KAAK,CAAC,KAAK,EAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAO1B,WAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IA2I3B,mBAAmB,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAanD,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,oBAAoB;IAgD5B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,KAAK;CAUhB"}
@@ -0,0 +1,618 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const Type_1 = __importDefault(require("../core/design/Type"));
16
+ const DBTypes_1 = require("../core/enums/DBTypes");
17
+ const IStatement_1 = require("../core/objects/interfaces/IStatement");
18
+ const SchemasDecorators_1 = __importDefault(require("../core/decorators/SchemasDecorators"));
19
+ const NotImplementedException_1 = __importDefault(require("../core/exceptions/NotImplementedException"));
20
+ const TypeNotSuportedException_1 = __importDefault(require("../core/exceptions/TypeNotSuportedException"));
21
+ const InvalidOperationException_1 = __importDefault(require("../core/exceptions/InvalidOperationException"));
22
+ const RelationType_1 = require("../core/enums/RelationType");
23
+ class PGDBSet {
24
+ constructor(cTor, context) {
25
+ this._statements = [];
26
+ this._ordering = [];
27
+ this._includes = [];
28
+ this._type = cTor;
29
+ this._table = Type_1.default.GetTableName(cTor);
30
+ this._maps = Type_1.default.GetColumnNameAndType(cTor);
31
+ this._manager = context["_manager"];
32
+ this._context = context;
33
+ }
34
+ AddAsync(obj) {
35
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
36
+ var _a, _b;
37
+ let sql = `insert into ${this._table}(`;
38
+ let values = `values (`;
39
+ let returnKey = '';
40
+ let key;
41
+ let subTypes = [];
42
+ for (let map of this._maps) {
43
+ if (Reflect.get(obj, map.Field) == undefined)
44
+ continue;
45
+ if (SchemasDecorators_1.default.IsPrimaryKey(this._type, map.Field)) {
46
+ returnKey = `returning ${map.Column}`;
47
+ key =
48
+ {
49
+ Column: map.Column,
50
+ Property: map.Field
51
+ };
52
+ continue;
53
+ }
54
+ let relation = SchemasDecorators_1.default.GetRelationAttribute(this._type, map.Field);
55
+ let designType = Type_1.default.GetDesingType(this._type, map.Field);
56
+ if ((designType && this._context.IsMapped(designType)) || (relation && this._context.IsMapped(relation.TypeBuilder()))) {
57
+ subTypes.push({
58
+ Column: map.Column,
59
+ Field: map.Field,
60
+ Type: map.Type
61
+ });
62
+ continue;
63
+ }
64
+ let colType = Type_1.default.CastType(map.Type);
65
+ sql += `${map.Column},`;
66
+ values += `${this.CreateValueStatement(colType, Reflect.get(obj, map.Field))},`;
67
+ }
68
+ sql = sql.substring(0, sql.length - 1) + ") ";
69
+ values = values.substring(0, values.length - 1) + ")";
70
+ let insert = `${sql} ${values} ${returnKey};`;
71
+ let retun = yield this._manager.Execute(insert);
72
+ if (key != undefined && retun.rows.length > 0) {
73
+ obj[key.Property] = retun.rows[0][key.Column];
74
+ }
75
+ let subTypesUpdates = [];
76
+ for (let sub of subTypes) {
77
+ let relation = SchemasDecorators_1.default.GetRelationAttribute(this._type, sub.Field);
78
+ let subType = Type_1.default.GetDesingType(this._type, sub.Field);
79
+ if (!subType && !relation)
80
+ throw new InvalidOperationException_1.default(`Can not determine the relation of the property ${this._type}.${sub.Field}`);
81
+ if (!subType && relation) {
82
+ subType = relation.TypeBuilder();
83
+ }
84
+ let isArray = subType == Array;
85
+ if (isArray) {
86
+ if (!relation)
87
+ continue;
88
+ subType = relation === null || relation === void 0 ? void 0 : relation.TypeBuilder();
89
+ }
90
+ let subObj = Reflect.get(obj, sub.Field);
91
+ if (subObj == undefined)
92
+ continue;
93
+ let subPK = SchemasDecorators_1.default.ExtractPrimaryKey(subType);
94
+ if (subPK == undefined) {
95
+ throw new InvalidOperationException_1.default(`The type ${subType.name} must have a primary key column`);
96
+ }
97
+ if (key != undefined) {
98
+ for (let subKey of Type_1.default.GetProperties(subType)) {
99
+ let subRelation = SchemasDecorators_1.default.GetRelationAttribute(subType, subKey);
100
+ if (subRelation && subRelation.TypeBuilder() == this._type) {
101
+ if (subRelation.Field != undefined && subRelation.Field != sub.Field)
102
+ continue;
103
+ if (subRelation.Relation == RelationType_1.RelationType.ONE_TO_MANY || subRelation.Relation == RelationType_1.RelationType.MANY_TO_MANY) {
104
+ if (isArray) {
105
+ for (let i of subObj) {
106
+ let value = ((_a = Reflect.get(i, subKey)) !== null && _a !== void 0 ? _a : []).filter(s => s[subPK] != obj[subPK]);
107
+ value.push(obj);
108
+ Reflect.set(i, subKey, value);
109
+ }
110
+ }
111
+ else {
112
+ let value = ((_b = Reflect.get(subObj, subKey)) !== null && _b !== void 0 ? _b : []).filter(s => s[subPK] != obj[subPK]);
113
+ value.push(obj);
114
+ Reflect.set(subObj, subKey, value);
115
+ }
116
+ }
117
+ else {
118
+ if (subRelation.Relation == RelationType_1.RelationType.MANY_TO_ONE) {
119
+ for (let i of subObj) {
120
+ Reflect.set(i, subKey, obj);
121
+ }
122
+ }
123
+ else {
124
+ Reflect.set(subObj, subKey, obj);
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ let colletion = this._context.Collection(subType);
131
+ if (isArray) {
132
+ for (let i of subObj) {
133
+ if (!Type_1.default.HasValue(Reflect.get(i, subPK)))
134
+ yield colletion["AddAsync"](i);
135
+ else
136
+ yield colletion["UpdateObjectAsync"](i, false);
137
+ }
138
+ }
139
+ else {
140
+ if (!Type_1.default.HasValue(Reflect.get(subObj, subPK)))
141
+ yield colletion["AddAsync"](subObj);
142
+ else
143
+ yield colletion["UpdateObjectAsync"](subObj, false);
144
+ }
145
+ let columnType = Type_1.default.CastType(Type_1.default.GetDesingTimeTypeName(subType, subPK));
146
+ if ((relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.MANY_TO_MANY || (relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.ONE_TO_MANY)
147
+ columnType = Type_1.default.AsArray(columnType);
148
+ let updateValues = [Reflect.get(subObj, subPK)];
149
+ if (isArray) {
150
+ updateValues = [];
151
+ for (let i of subObj) {
152
+ updateValues.push(Reflect.get(i, subPK));
153
+ }
154
+ }
155
+ subTypesUpdates.push(`"${sub.Column}" = ${this.CreateValueStatement(columnType, isArray ? updateValues : updateValues[0])}`);
156
+ }
157
+ if (subTypesUpdates.length > 0) {
158
+ let subUpdate = `update "${Type_1.default.GetTableName(this._type)}" set `;
159
+ for (let p of subTypesUpdates) {
160
+ subUpdate += `${p},`;
161
+ }
162
+ subUpdate = `${subUpdate.substring(0, subUpdate.length - 1)} where `;
163
+ subUpdate += this.EvaluateStatement({
164
+ StatementType: StatementType.WHERE,
165
+ Statement: {
166
+ Field: key.Property,
167
+ Kind: IStatement_1.Operation.EQUALS,
168
+ Value: Reflect.get(obj, key.Property)
169
+ }
170
+ });
171
+ yield this._manager.ExecuteNonQuery(subUpdate);
172
+ }
173
+ return obj;
174
+ }));
175
+ }
176
+ UpdateAsync(obj) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ return yield this.UpdateObjectAsync(obj, false);
179
+ });
180
+ }
181
+ UpdateObjectAsync(obj, cascade) {
182
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
183
+ var _a;
184
+ let keys = Type_1.default.GetProperties(this._type).filter(p => SchemasDecorators_1.default.IsPrimaryKey(this._type, p));
185
+ let wheres = [];
186
+ if (keys && keys.length > 0) {
187
+ keys.forEach((w, i) => {
188
+ wheres.push({
189
+ Statement: {
190
+ Field: w,
191
+ Kind: IStatement_1.Operation.EQUALS,
192
+ Value: Reflect.get(obj, w)
193
+ },
194
+ StatementType: i == 0 ? StatementType.WHERE : StatementType.AND
195
+ });
196
+ });
197
+ }
198
+ let update = `update ${this._table} set`;
199
+ let values = "";
200
+ let key;
201
+ let subTypes = [];
202
+ for (let map of this._maps) {
203
+ let designType = Type_1.default.GetDesingType(this._type, map.Field);
204
+ let relation = SchemasDecorators_1.default.GetRelationAttribute(this._type, map.Field);
205
+ if ((designType && this._context.IsMapped(designType)) || (relation && this._context.IsMapped(relation.TypeBuilder()))) {
206
+ subTypes.push({
207
+ Column: map.Column,
208
+ Field: map.Field,
209
+ Type: map.Type
210
+ });
211
+ continue;
212
+ }
213
+ let colType = Type_1.default.CastType(map.Type);
214
+ if (SchemasDecorators_1.default.IsPrimaryKey(this._type, map.Field)) {
215
+ key =
216
+ {
217
+ Column: map.Column,
218
+ Property: map.Field
219
+ };
220
+ continue;
221
+ }
222
+ values += `${map.Column} = ${this.CreateValueStatement(colType, Reflect.get(obj, map.Field))},`;
223
+ }
224
+ update = `${update} ${values.substring(0, values.length - 1)}`;
225
+ for (let where of wheres) {
226
+ update += ` ${where.StatementType} ${this.EvaluateStatement(where)} `;
227
+ }
228
+ yield this._manager.ExecuteNonQuery(update);
229
+ let subTypesUpdates = [];
230
+ for (let sub of subTypes) {
231
+ let relation = SchemasDecorators_1.default.GetRelationAttribute(this._type, sub.Field);
232
+ let subType = Type_1.default.GetDesingType(this._type, sub.Field);
233
+ if (!subType && !relation)
234
+ throw new InvalidOperationException_1.default(`Can not determine the relation of the property ${this._type}.${sub.Field}`);
235
+ if (!subType && relation) {
236
+ subType = relation.TypeBuilder();
237
+ }
238
+ let isArray = subType == Array;
239
+ if (isArray) {
240
+ if (!relation)
241
+ continue;
242
+ subType = relation === null || relation === void 0 ? void 0 : relation.TypeBuilder();
243
+ }
244
+ let subObj = Reflect.get(obj, sub.Field);
245
+ let subPK = SchemasDecorators_1.default.ExtractPrimaryKey(subType);
246
+ let metadata = Type_1.default.ExtractMetadata(obj);
247
+ let meta = metadata.filter(s => s.Field == sub.Field);
248
+ if (meta.length > 0 && subObj == undefined) {
249
+ if (meta[0].Loaded)
250
+ subTypesUpdates.push(`"${sub.Column}" = null`);
251
+ continue;
252
+ }
253
+ if (subObj == undefined)
254
+ continue;
255
+ if (subPK == undefined) {
256
+ throw new InvalidOperationException_1.default(`The type ${subType.name} must have a primary key column`);
257
+ }
258
+ if (key != undefined) {
259
+ for (let subKey of Type_1.default.GetProperties(subType)) {
260
+ let subRelation = SchemasDecorators_1.default.GetRelationAttribute(subType, subKey);
261
+ if (subRelation && subRelation.TypeBuilder() == this._type) {
262
+ if (subRelation.Field != undefined && subRelation.Field != sub.Field)
263
+ continue;
264
+ if (subRelation.Relation == RelationType_1.RelationType.ONE_TO_MANY || subRelation.Relation == RelationType_1.RelationType.MANY_TO_MANY) {
265
+ if (isArray) {
266
+ for (let i of subObj) {
267
+ let value = ((_a = Reflect.get(i, subKey)) !== null && _a !== void 0 ? _a : []).filter(s => s[subPK] != obj[subPK]);
268
+ value.push(obj);
269
+ Reflect.set(i, subKey, value);
270
+ }
271
+ }
272
+ }
273
+ else {
274
+ if (subRelation.Relation == RelationType_1.RelationType.MANY_TO_ONE) {
275
+ for (let i of subObj) {
276
+ Reflect.set(i, subKey, obj);
277
+ }
278
+ }
279
+ else {
280
+ Reflect.set(subObj, subKey, obj);
281
+ }
282
+ }
283
+ }
284
+ }
285
+ }
286
+ let colletion = this._context.Collection(subType);
287
+ if (isArray) {
288
+ for (let i of subObj) {
289
+ if (!Type_1.default.HasValue(Reflect.get(i, subPK)))
290
+ yield colletion["AddAsync"](i);
291
+ else if (cascade)
292
+ yield colletion["UpdateObjectAsync"](i, false);
293
+ }
294
+ }
295
+ else {
296
+ if (!Type_1.default.HasValue(Reflect.get(subObj, subPK)))
297
+ yield colletion["AddAsync"](subObj);
298
+ else if (cascade)
299
+ yield colletion["UpdateObjectAsync"](subObj, false);
300
+ }
301
+ let columnType = Type_1.default.CastType(Type_1.default.GetDesingTimeTypeName(subType, subPK));
302
+ if ((relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.MANY_TO_MANY || (relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.ONE_TO_MANY)
303
+ columnType = Type_1.default.AsArray(columnType);
304
+ let updateValues = [Reflect.get(subObj, subPK)];
305
+ if (isArray) {
306
+ updateValues = [];
307
+ for (let i of subObj) {
308
+ updateValues.push(Reflect.get(i, subPK));
309
+ }
310
+ }
311
+ subTypesUpdates.push(`"${sub.Column}" = ${this.CreateValueStatement(columnType, isArray ? updateValues : updateValues[0])}`);
312
+ }
313
+ if (subTypesUpdates.length > 0) {
314
+ let subUpdate = `update "${Type_1.default.GetTableName(this._type)}" set `;
315
+ for (let p of subTypesUpdates) {
316
+ subUpdate += `${p},`;
317
+ }
318
+ subUpdate = `${subUpdate.substring(0, subUpdate.length - 1)} where `;
319
+ subUpdate += this.EvaluateStatement({
320
+ StatementType: StatementType.WHERE,
321
+ Statement: {
322
+ Field: key.Property,
323
+ Kind: IStatement_1.Operation.EQUALS,
324
+ Value: Reflect.get(obj, key.Property)
325
+ }
326
+ });
327
+ yield this._manager.ExecuteNonQuery(subUpdate);
328
+ }
329
+ return obj;
330
+ }));
331
+ }
332
+ DeleteAsync(obj) {
333
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
334
+ let keys = Type_1.default.GetProperties(this._type).filter(p => SchemasDecorators_1.default.IsPrimaryKey(this._type, p));
335
+ let wheres = [];
336
+ if (keys && keys.length > 0) {
337
+ keys.forEach((w, i) => {
338
+ wheres.push({
339
+ Statement: {
340
+ Field: w,
341
+ Kind: IStatement_1.Operation.EQUALS,
342
+ Value: Reflect.get(obj, w)
343
+ },
344
+ StatementType: i == 0 ? StatementType.WHERE : StatementType.AND
345
+ });
346
+ });
347
+ }
348
+ let del = `delete from ${this._table} `;
349
+ for (let where of wheres) {
350
+ del += ` ${where.StatementType} ${this.EvaluateStatement(where)} `;
351
+ }
352
+ yield this._manager.ExecuteNonQuery(del);
353
+ return obj;
354
+ }));
355
+ }
356
+ Where(statement) {
357
+ var _a;
358
+ this._statements.push({
359
+ Statement: {
360
+ Field: statement.Field.toString(),
361
+ Kind: (_a = statement.Kind) !== null && _a !== void 0 ? _a : IStatement_1.Operation.EQUALS,
362
+ Value: statement.Value
363
+ },
364
+ StatementType: StatementType.WHERE
365
+ });
366
+ return this;
367
+ }
368
+ And(statement) {
369
+ var _a;
370
+ this._statements.push({
371
+ Statement: {
372
+ Field: statement.Field.toString(),
373
+ Kind: (_a = statement.Kind) !== null && _a !== void 0 ? _a : IStatement_1.Operation.EQUALS,
374
+ Value: statement.Value
375
+ },
376
+ StatementType: StatementType.AND
377
+ });
378
+ return this;
379
+ }
380
+ Or(statement) {
381
+ var _a;
382
+ this._statements.push({
383
+ Statement: {
384
+ Field: statement.Field.toString(),
385
+ Kind: (_a = statement.Kind) !== null && _a !== void 0 ? _a : IStatement_1.Operation.EQUALS,
386
+ Value: statement.Value
387
+ },
388
+ StatementType: StatementType.OR
389
+ });
390
+ return this;
391
+ }
392
+ OrderBy(key) {
393
+ this._ordering.push({
394
+ Field: key,
395
+ Order: OrderDirection.ASC
396
+ });
397
+ return this;
398
+ }
399
+ Join(key) {
400
+ this._includes.push({
401
+ Field: key
402
+ });
403
+ return this;
404
+ }
405
+ OrderDescendingBy(key) {
406
+ this._ordering.push({
407
+ Field: key,
408
+ Order: OrderDirection.DESC
409
+ });
410
+ return this;
411
+ }
412
+ Limit(limit) {
413
+ this._limit = limit >= 1 ? { Limit: limit } : undefined;
414
+ return this;
415
+ }
416
+ ToListAsync() {
417
+ return __awaiter(this, void 0, void 0, function* () {
418
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
419
+ let query = `select * from ${this._table}`;
420
+ for (let where of this._statements) {
421
+ query += ` ${where.StatementType} ${this.EvaluateStatement(where)} `;
422
+ }
423
+ let ordenation = "";
424
+ for (let orderby of this._ordering) {
425
+ ordenation += `${this.EvaluateOrderBy(orderby)},`;
426
+ }
427
+ if (this._ordering.length > 0) {
428
+ query += ` order by ${ordenation.substring(0, ordenation.length - 1)}`;
429
+ }
430
+ if (this._limit != undefined) {
431
+ query += ` limit ${this._limit.Limit}`;
432
+ }
433
+ var r = yield this._manager.Execute(query);
434
+ if (r.rows.length == 0) {
435
+ this.Reset();
436
+ return [];
437
+ }
438
+ let list = [];
439
+ for (let row of r.rows) {
440
+ let instance = Reflect.construct(this._type, []);
441
+ for (let map of this._maps) {
442
+ let type = Type_1.default.GetDesingType(this._type, map.Field);
443
+ let relation = SchemasDecorators_1.default.GetRelationAttribute(this._type, map.Field);
444
+ if ((!type || type === Array) && relation)
445
+ type = relation.TypeBuilder();
446
+ if (!this._context.IsMapped(type))
447
+ Reflect.set(instance, map.Field, Reflect.get(row, map.Column));
448
+ else {
449
+ if (Reflect.get(row, map.Column) == undefined)
450
+ continue;
451
+ let includeType = this._includes.filter(s => s.Field == map.Field);
452
+ let loaded = false;
453
+ if (includeType.length > 0) {
454
+ loaded = true;
455
+ let colletion = this._context.Collection(type);
456
+ if (colletion == undefined)
457
+ continue;
458
+ let subKey = SchemasDecorators_1.default.ExtractPrimaryKey(type);
459
+ if ((relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.MANY_TO_MANY || (relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.ONE_TO_MANY) {
460
+ let values = Reflect.get(row, map.Column);
461
+ if (!values || values.length == 0)
462
+ continue;
463
+ colletion.Where({
464
+ Field: subKey,
465
+ Kind: IStatement_1.Operation.EQUALS,
466
+ Value: values[0]
467
+ });
468
+ for (let i = 0; i < values.length; i++) {
469
+ if (i == 0)
470
+ continue;
471
+ colletion.Or({
472
+ Field: subKey,
473
+ Kind: IStatement_1.Operation.EQUALS,
474
+ Value: values[i]
475
+ });
476
+ }
477
+ let subObjets = yield colletion.ToListAsync();
478
+ Reflect.set(instance, map.Field, subObjets);
479
+ }
480
+ else {
481
+ colletion.Where({
482
+ Field: subKey,
483
+ Kind: IStatement_1.Operation.EQUALS,
484
+ Value: Reflect.get(row, map.Column)
485
+ });
486
+ let subObjet = yield colletion.FirstOrDefaultAsync();
487
+ Reflect.set(instance, map.Field, subObjet);
488
+ }
489
+ }
490
+ Type_1.default.InjectMetadata(instance, {
491
+ Field: map.Field,
492
+ Type: map.Type,
493
+ Value: Reflect.get(row, map.Column),
494
+ Loaded: loaded
495
+ });
496
+ }
497
+ }
498
+ list.push(instance);
499
+ }
500
+ this.Reset();
501
+ return list;
502
+ }));
503
+ });
504
+ }
505
+ FirstOrDefaultAsync() {
506
+ return __awaiter(this, void 0, void 0, function* () {
507
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
508
+ let rows = yield this.ToListAsync();
509
+ if (rows && rows.length > 0)
510
+ return rows[0];
511
+ return undefined;
512
+ }));
513
+ });
514
+ }
515
+ CreatePromisse(func) {
516
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
517
+ try {
518
+ resolve(yield func());
519
+ }
520
+ catch (err) {
521
+ reject(err);
522
+ }
523
+ }));
524
+ }
525
+ CreateValueStatement(colType, value) {
526
+ if (colType == DBTypes_1.DBTypes.TEXT) {
527
+ return `$$${value}$$`;
528
+ }
529
+ else if (Type_1.default.IsNumber(colType)) {
530
+ return `${value}`.replace(',', '.');
531
+ }
532
+ else if (Type_1.default.IsDate(colType)) {
533
+ let dt = value;
534
+ let dtStr = `'${dt.getFullYear()}-${dt.getMonth() + 1}-${dt.getDate()}'`;
535
+ if (colType == DBTypes_1.DBTypes.DATE) {
536
+ return `${dtStr}`;
537
+ }
538
+ else {
539
+ return `${dtStr} ${dt.getHours()}:${dt.getMinutes()}`;
540
+ }
541
+ }
542
+ else if (Type_1.default.IsArray(colType)) {
543
+ let valuesStr = 'array[';
544
+ let elementType = Type_1.default.ExtractElementType(colType);
545
+ let hasItens = false;
546
+ for (let i in value) {
547
+ hasItens = true;
548
+ valuesStr += `${this.CreateValueStatement(elementType, value[i])},`;
549
+ }
550
+ if (hasItens)
551
+ valuesStr = valuesStr.substring(0, valuesStr.length - 1);
552
+ valuesStr += `]::${this._manager["CastToPostgreSQLType"](colType)}`;
553
+ return valuesStr;
554
+ }
555
+ throw new TypeNotSuportedException_1.default(`The type ${colType} is not suported`);
556
+ }
557
+ EvaluateStatement(pgStatement) {
558
+ let column = Type_1.default.GetColumnName(this._type, pgStatement.Statement.Field.toString());
559
+ let type = Type_1.default.GetDesingTimeTypeName(this._type, pgStatement.Statement.Field.toString());
560
+ let operation = this.GetOperators(pgStatement.Statement.Kind);
561
+ if (pgStatement.Statement.Value == undefined)
562
+ return `${column} is null`;
563
+ if (Type_1.default.IsNumber(Type_1.default.CastType(type.toString()))) {
564
+ operation[1] = "";
565
+ operation[2] = "";
566
+ }
567
+ else {
568
+ operation[1] = `$$${operation[1]}`;
569
+ operation[2] = `${operation[2]}$$`;
570
+ }
571
+ return `${column} ${operation[0]} ${operation[1]}${pgStatement.Statement.Value}${operation[2]}`;
572
+ }
573
+ EvaluateOrderBy(ordering) {
574
+ let column = Type_1.default.GetColumnName(this._type, ordering.Field.toString());
575
+ return ` ${column} ${ordering.Order}`;
576
+ }
577
+ GetOperators(operation) {
578
+ switch (operation) {
579
+ case IStatement_1.Operation.EQUALS: return ["=", "", ""];
580
+ case IStatement_1.Operation.CONSTAINS: return ["ilike", "%", "%"];
581
+ case IStatement_1.Operation.STARTWITH:
582
+ return ["ilike", "", "%"];
583
+ ;
584
+ case IStatement_1.Operation.ENDWITH:
585
+ return ["ilike", "%", ""];
586
+ ;
587
+ case IStatement_1.Operation.GREATHER:
588
+ return [">", "", ""];
589
+ ;
590
+ case IStatement_1.Operation.SMALLER:
591
+ return ["<", "", ""];
592
+ ;
593
+ case IStatement_1.Operation.NOTEQUALS:
594
+ return ["!=", "", ""];
595
+ ;
596
+ default: throw new NotImplementedException_1.default(`The operation ${operation} is not supported`);
597
+ }
598
+ }
599
+ Reset() {
600
+ this._statements = [];
601
+ this._ordering = [];
602
+ this._includes = [];
603
+ this._limit = undefined;
604
+ }
605
+ }
606
+ exports.default = PGDBSet;
607
+ var OrderDirection;
608
+ (function (OrderDirection) {
609
+ OrderDirection["ASC"] = "asc";
610
+ OrderDirection["DESC"] = "desc";
611
+ })(OrderDirection || (OrderDirection = {}));
612
+ var StatementType;
613
+ (function (StatementType) {
614
+ StatementType["WHERE"] = "where";
615
+ StatementType["OR"] = "or";
616
+ StatementType["AND"] = "and";
617
+ })(StatementType || (StatementType = {}));
618
+ //# sourceMappingURL=PGDBSet.js.map