@entity-access/entity-access 1.0.166 → 1.0.168
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.
- package/README.md +177 -18
- package/dist/drivers/base/BaseDriver.d.ts +18 -1
- package/dist/drivers/base/BaseDriver.d.ts.map +1 -1
- package/dist/drivers/base/BaseDriver.js +21 -3
- package/dist/drivers/base/BaseDriver.js.map +1 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts.map +1 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.js +37 -7
- package/dist/drivers/sql-server/ExpressionToSqlServer.js.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.d.ts.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.js +10 -1
- package/dist/drivers/sql-server/SqlServerDriver.js.map +1 -1
- package/dist/model/EntitySource.d.ts +2 -1
- package/dist/model/EntitySource.d.ts.map +1 -1
- package/dist/model/EntitySource.js +14 -3
- package/dist/model/EntitySource.js.map +1 -1
- package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
- package/dist/query/ast/ExpressionToSql.js +31 -3
- package/dist/query/ast/ExpressionToSql.js.map +1 -1
- package/dist/query/ast/Expressions.d.ts +1 -0
- package/dist/query/ast/Expressions.d.ts.map +1 -1
- package/dist/query/ast/Expressions.js.map +1 -1
- package/dist/tests/db-tests/tests/upsert-test.d.ts +3 -0
- package/dist/tests/db-tests/tests/upsert-test.d.ts.map +1 -0
- package/dist/tests/db-tests/tests/upsert-test.js +18 -0
- package/dist/tests/db-tests/tests/upsert-test.js.map +1 -0
- package/dist/tests/model/ShoppingContext.d.ts +5 -0
- package/dist/tests/model/ShoppingContext.d.ts.map +1 -1
- package/dist/tests/model/ShoppingContext.js +20 -0
- package/dist/tests/model/ShoppingContext.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/drivers/base/BaseDriver.ts +44 -3
- package/src/drivers/sql-server/ExpressionToSqlServer.ts +42 -7
- package/src/drivers/sql-server/SqlServerDriver.ts +10 -1
- package/src/model/EntitySource.ts +15 -3
- package/src/query/ast/ExpressionToSql.ts +36 -3
- package/src/query/ast/Expressions.ts +1 -0
- package/src/tests/db-tests/tests/upsert-test.ts +25 -0
- package/src/tests/model/ShoppingContext.ts +18 -0
package/README.md
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
[](https://github.com/Entity-Access/entity-access/actions) [](https://badge.fury.io/js/%40entity-access%2Fentity-access)
|
|
1
2
|
# Entity Access
|
|
2
3
|
|
|
3
4
|
Inspired from Entity Framework Core, Entity Access is ORM for JavaScript runtime such as Node, YantraJS.
|
|
@@ -7,22 +8,27 @@ Inspired from Entity Framework Core, Entity Access is ORM for JavaScript runtime
|
|
|
7
8
|
1. Released - Postgres Driver
|
|
8
9
|
2. Released - Sql Server Driver
|
|
9
10
|
3. Released - Include Feature
|
|
11
|
+
4. Planned - MySql Driver
|
|
12
|
+
5. Planned - Oracle Driver (Need help, we do not have Oracle Expertise)
|
|
10
13
|
|
|
11
14
|
## Features
|
|
12
|
-
1.
|
|
13
|
-
2.
|
|
15
|
+
1. Arrow function based query features with automatic joins.
|
|
16
|
+
2. Unit of Work and Repository Pattern
|
|
14
17
|
3. Automatic Migrations for missing schema - this is done for fast development and deployment.
|
|
15
18
|
4. Sql functions such as LIKE, You can add your own custom functions easily.
|
|
16
19
|
5. Postgres Driver
|
|
17
20
|
6. Sql Server Driver
|
|
18
21
|
7. Automatic parameterization to safeguard sql injection attacks.
|
|
19
22
|
8. Context Filters - This is a new concept where you can setup filters that will be used against saving/retrieving data.
|
|
23
|
+
9. Sum and Count query methods.
|
|
24
|
+
10. Composite Primary Key Support.
|
|
20
25
|
|
|
21
26
|
## Upcoming Features
|
|
22
27
|
1. Projection - Split query mode only, single level only.
|
|
23
28
|
2. Update column before save
|
|
24
29
|
3. GroupBy
|
|
25
30
|
4. Custom Migration Steps
|
|
31
|
+
5. MySql support
|
|
26
32
|
|
|
27
33
|
### Unit of Work
|
|
28
34
|
|
|
@@ -73,17 +79,14 @@ const db = new ShoppingContext();
|
|
|
73
79
|
|
|
74
80
|
// find customer from orderID
|
|
75
81
|
const q = db.customers
|
|
76
|
-
//
|
|
82
|
+
// set parameters
|
|
77
83
|
.where({ orderID },
|
|
78
|
-
//
|
|
79
|
-
// accepting parameters
|
|
84
|
+
// access parameters
|
|
80
85
|
(p) =>
|
|
81
|
-
//
|
|
86
|
+
// following expression
|
|
82
87
|
// be converted to SQL
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
(x) => x.orders.some(
|
|
86
|
-
// This will results in exists or join
|
|
88
|
+
(customer) => customer.orders.some(
|
|
89
|
+
// joins/exists will be set
|
|
87
90
|
// based on relations declared
|
|
88
91
|
(order) => order.orderID === p.orderID );
|
|
89
92
|
const customer = await q.first();
|
|
@@ -95,7 +98,7 @@ Above expression will result in following filter expression
|
|
|
95
98
|
EXISTS (
|
|
96
99
|
SELECT 1
|
|
97
100
|
FROM Orders as o1
|
|
98
|
-
WHERE
|
|
101
|
+
WHERE c.customerID = o1.orderID
|
|
99
102
|
AND o1.orderID = $1
|
|
100
103
|
)
|
|
101
104
|
LIMIT 1;
|
|
@@ -118,6 +121,16 @@ const q = db.orders.where({ userName },
|
|
|
118
121
|
// note that the join will be performed automatically
|
|
119
122
|
```
|
|
120
123
|
|
|
124
|
+
Following query will be generated for the query.
|
|
125
|
+
```sql
|
|
126
|
+
SELECT o.orderID, o.orderDate, o.customerID, ...
|
|
127
|
+
FROM orders as o
|
|
128
|
+
INNER JOIN customers c
|
|
129
|
+
ON c.customerID = o.customerID
|
|
130
|
+
WHERE
|
|
131
|
+
c.userName like $1
|
|
132
|
+
```
|
|
133
|
+
|
|
121
134
|
### Typed Configurations
|
|
122
135
|
```typescript
|
|
123
136
|
class ShoppingContext {
|
|
@@ -151,6 +164,9 @@ class Product {
|
|
|
151
164
|
productID: number;
|
|
152
165
|
|
|
153
166
|
// Create a column with default expression
|
|
167
|
+
// the expression will be converted to equivalent SQL
|
|
168
|
+
// for the target provider `NOW()` for postgresql and
|
|
169
|
+
// `GETUTCDATE()` for sql server.
|
|
154
170
|
@Column({ default: () => Sql.date.now()})
|
|
155
171
|
dateUpdated: DateTime;
|
|
156
172
|
|
|
@@ -158,6 +174,16 @@ class Product {
|
|
|
158
174
|
@Column({ default: () => ""})
|
|
159
175
|
productCode: string;
|
|
160
176
|
|
|
177
|
+
// You can specifiy computed expression
|
|
178
|
+
// that will be converted to equivalent SQL
|
|
179
|
+
// for target provider.
|
|
180
|
+
@Column({
|
|
181
|
+
/* Certain providers might need length such as postgresql*/
|
|
182
|
+
length: 200,
|
|
183
|
+
computed: (p) => Sql.text.concatImmutable(Sql.cast.asText(p.productID), p.productCode)
|
|
184
|
+
})
|
|
185
|
+
readonly slug: string;
|
|
186
|
+
|
|
161
187
|
orderItems: OrderItem[];
|
|
162
188
|
}
|
|
163
189
|
|
|
@@ -167,7 +193,7 @@ class OrderItem {
|
|
|
167
193
|
@Column({ key: true, generated: "identity"})
|
|
168
194
|
orderItemID: number;
|
|
169
195
|
|
|
170
|
-
@Column()
|
|
196
|
+
@Column({})
|
|
171
197
|
/**
|
|
172
198
|
* Following configuration declares Foreign Key Relation.
|
|
173
199
|
* That will give compilation error if configured incorrectly.
|
|
@@ -181,14 +207,30 @@ class OrderItem {
|
|
|
181
207
|
})
|
|
182
208
|
productID: number;
|
|
183
209
|
|
|
184
|
-
@Column()
|
|
210
|
+
@Column({})
|
|
211
|
+
@RelateTo(Order, {
|
|
212
|
+
property: (orderItem) => orderItem.order,
|
|
213
|
+
inverseProperty: (order) => order.orderItems
|
|
214
|
+
})
|
|
185
215
|
orderID: number;
|
|
186
216
|
|
|
187
217
|
product: Product;
|
|
188
218
|
|
|
219
|
+
order: Order;
|
|
220
|
+
|
|
189
221
|
}
|
|
190
222
|
|
|
191
223
|
// You can use `RelateToOne` for one to one mapping.
|
|
224
|
+
|
|
225
|
+
// To prevent circular dependency issues, you can also use different
|
|
226
|
+
// arguments as shown below...
|
|
227
|
+
|
|
228
|
+
@RelateTo({
|
|
229
|
+
type: () => Product
|
|
230
|
+
property: (orderItem) => orderItem.product,
|
|
231
|
+
inverseProperty: (product) => product.orderItems
|
|
232
|
+
})
|
|
233
|
+
productID: number;
|
|
192
234
|
```
|
|
193
235
|
|
|
194
236
|
## Query Examples
|
|
@@ -333,8 +375,8 @@ declare module "@entity-access/entity-access/dist/sql/ISql.js" {
|
|
|
333
375
|
}
|
|
334
376
|
|
|
335
377
|
Sql.myFunctions = {
|
|
336
|
-
calculateAmount(total: number, units: number, taxId: string):
|
|
337
|
-
// in reality
|
|
378
|
+
calculateAmount(total: number, units: number, taxId: string): number {
|
|
379
|
+
// in reality this function will return number,
|
|
338
380
|
// but expression to sql compiler expects an array of
|
|
339
381
|
// strings and functions. Function represents parameters
|
|
340
382
|
// being sent to SQL. Parameters cannot be accessed here.
|
|
@@ -360,7 +402,124 @@ Sql.myFunctions = {
|
|
|
360
402
|
|
|
361
403
|
// now you can use this as shown below...
|
|
362
404
|
|
|
363
|
-
context.
|
|
364
|
-
.where({
|
|
405
|
+
context.orders.all()
|
|
406
|
+
.where({amount}, (p) => (x) =>
|
|
407
|
+
Sql.mySchema.calculateAmount(x.total, x.units, x.taxId) < p.amount );
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
## Context Filters and Events
|
|
412
|
+
|
|
413
|
+
Let's assume that you wan to setup filters in such a way that customer can only
|
|
414
|
+
access his own orders.
|
|
415
|
+
|
|
416
|
+
In order to setup context filters and events, we need to use inbuilt dependency injection, to provide, access to current user and events.
|
|
417
|
+
|
|
418
|
+
```typescript
|
|
419
|
+
export class ProductEvents extends EntityEvents<Product> {
|
|
420
|
+
|
|
421
|
+
@Inject
|
|
422
|
+
user: User;
|
|
423
|
+
|
|
424
|
+
@Inject
|
|
425
|
+
notificationService: NotificationService;
|
|
426
|
+
|
|
427
|
+
filter(query: IEntityQuery<Product>) {
|
|
428
|
+
const { userID } = this.user ?? {};
|
|
429
|
+
if (userID) {
|
|
430
|
+
|
|
431
|
+
// user can only see products that
|
|
432
|
+
// user has purchased or products are
|
|
433
|
+
// active.
|
|
434
|
+
|
|
435
|
+
return query.where({ userID }, (p) =>
|
|
436
|
+
p.isActive
|
|
437
|
+
|| x.orderItems.some((oi) =>
|
|
438
|
+
oi.order.customerID === p.userID
|
|
439
|
+
)
|
|
440
|
+
);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// anonymous users can see only active products
|
|
444
|
+
return query.where({ userID }, (p) => p.isActive);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/*
|
|
448
|
+
When you are using eager loading, you can avoid adding
|
|
449
|
+
extra filters for each relation if the parent is already
|
|
450
|
+
filtered. For example, if you are trying to list products
|
|
451
|
+
inside orders, since order is already filtered, you can
|
|
452
|
+
return query as it is.
|
|
453
|
+
*/
|
|
454
|
+
includeFilter(query: IEntityQuery<Product>, type, member) {
|
|
455
|
+
if(type === OrderItem) {
|
|
456
|
+
return query;
|
|
457
|
+
}
|
|
458
|
+
// for every other include
|
|
459
|
+
// use normal filter.
|
|
460
|
+
return this.filter(query);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/*
|
|
464
|
+
this will be called just before
|
|
465
|
+
save changes, before the actual editing occurs,
|
|
466
|
+
we will automatically determine if the product
|
|
467
|
+
can be edited or not by the current use.
|
|
468
|
+
*/
|
|
469
|
+
|
|
470
|
+
/*
|
|
471
|
+
This will also work correctly when there are multiple
|
|
472
|
+
entities in the single transaction.
|
|
473
|
+
*/
|
|
474
|
+
|
|
475
|
+
modifyFilter(query: IEntityQuery<Product>) {
|
|
476
|
+
const { userID } = this.user ?? {};
|
|
477
|
+
if (userID) {
|
|
478
|
+
|
|
479
|
+
// user can only see products that
|
|
480
|
+
// user has purchased or products are
|
|
481
|
+
// active.
|
|
482
|
+
|
|
483
|
+
return query.where({ userID }, (p) =>
|
|
484
|
+
p.isActive
|
|
485
|
+
|| x.orderItems.some((oi) =>
|
|
486
|
+
oi.order.customerID === p.userID
|
|
487
|
+
)
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
throw new EntityAccessError(`Cannot edit the product`);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// after above filter has passed the entity
|
|
494
|
+
// following methods will be raised for every entity
|
|
495
|
+
beforeInsert(entity: Product, entry: ChangeEntry<Product>) {
|
|
496
|
+
|
|
497
|
+
}
|
|
365
498
|
|
|
366
|
-
|
|
499
|
+
// each of these methods, beforeInsert, afteInsert, beforeUpdate
|
|
500
|
+
// afterUpdate, beforeDelete and afterDelete are asynchronous and
|
|
501
|
+
// you can await on async methods.
|
|
502
|
+
async afterInsert(entity: Product, entry: ChangeEntry<Product>) {
|
|
503
|
+
await this.notificationService.notify(entity);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
// register all events in context events..
|
|
510
|
+
export class AppContextEvents extends ContextEvents{
|
|
511
|
+
|
|
512
|
+
constructor() {
|
|
513
|
+
this.register(Product, ProductEvents);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
const allEvents = new AppContextEvents();
|
|
517
|
+
|
|
518
|
+
// create context with context events.
|
|
519
|
+
|
|
520
|
+
const db = new ShoppingContext(allEvents);
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
// this will return the query with filter
|
|
524
|
+
const products = db.filteredQuery<Product>(Product);
|
|
525
|
+
```
|
|
@@ -69,6 +69,23 @@ export declare abstract class BaseConnection {
|
|
|
69
69
|
abstract createTransaction(): Promise<EntityTransaction>;
|
|
70
70
|
runInTransaction<T = any>(fx?: () => Promise<T>): Promise<T>;
|
|
71
71
|
}
|
|
72
|
+
export type DirectSaveType =
|
|
73
|
+
/**
|
|
74
|
+
* Inserts given item and returns generated columns
|
|
75
|
+
*/
|
|
76
|
+
"insert" |
|
|
77
|
+
/**
|
|
78
|
+
* Updates given item and returns generated columns
|
|
79
|
+
*/
|
|
80
|
+
"update" |
|
|
81
|
+
/**
|
|
82
|
+
* Inserts if not exists or update and returns generated columns for given keys
|
|
83
|
+
*/
|
|
84
|
+
"upsert" |
|
|
85
|
+
/**
|
|
86
|
+
* Inserts if not exists or selects generated columns for given keys
|
|
87
|
+
*/
|
|
88
|
+
"insert-select";
|
|
72
89
|
export declare abstract class BaseDriver {
|
|
73
90
|
readonly connectionString: IDbConnectionString;
|
|
74
91
|
abstract get compiler(): QueryCompiler;
|
|
@@ -76,7 +93,7 @@ export declare abstract class BaseDriver {
|
|
|
76
93
|
abstract newConnection(): BaseConnection;
|
|
77
94
|
/** Must dispose ObjectPools */
|
|
78
95
|
abstract dispose(): any;
|
|
79
|
-
createUpsertExpression(type: EntityType, entity: any, mode: "update" | "upsert" | "insert"): Expression;
|
|
96
|
+
createUpsertExpression(type: EntityType, entity: any, mode: "update" | "upsert" | "insert" | "insert-select", entityKeys?: any): Expression;
|
|
80
97
|
createInsertExpression(type: EntityType, entity: any): InsertStatement;
|
|
81
98
|
createUpdateExpression(entry: ChangeEntry): UpdateStatement;
|
|
82
99
|
createDeleteExpression(type: EntityType, entity: any): DeleteStatement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDriver.d.ts","sourceRoot":"","sources":["../../../src/drivers/base/BaseDriver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BaseDriver.d.ts","sourceRoot":"","sources":["../../../src/drivers/base/BaseDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,14 +64,18 @@ export class BaseDriver {
|
|
|
64
64
|
constructor(connectionString) {
|
|
65
65
|
this.connectionString = connectionString;
|
|
66
66
|
}
|
|
67
|
-
createUpsertExpression(type, entity, mode) {
|
|
67
|
+
createUpsertExpression(type, entity, mode, entityKeys) {
|
|
68
68
|
const table = type.fullyQualifiedName;
|
|
69
|
+
const returnFields = [];
|
|
69
70
|
if (mode === "insert") {
|
|
70
71
|
const fields = [];
|
|
71
72
|
const values = [];
|
|
72
73
|
for (const iterator of type.columns) {
|
|
73
74
|
const value = entity[iterator.name];
|
|
74
75
|
if (value === void 0) {
|
|
76
|
+
if (iterator.generated) {
|
|
77
|
+
returnFields.push(Expression.identifier(iterator.columnName));
|
|
78
|
+
}
|
|
75
79
|
continue;
|
|
76
80
|
}
|
|
77
81
|
fields.push(Expression.identifier(iterator.columnName));
|
|
@@ -79,6 +83,10 @@ export class BaseDriver {
|
|
|
79
83
|
}
|
|
80
84
|
return InsertStatement.create({
|
|
81
85
|
table,
|
|
86
|
+
returnValues: returnFields.length ? ReturnUpdated.create({
|
|
87
|
+
changes: "INSERTED",
|
|
88
|
+
fields: returnFields
|
|
89
|
+
}) : void 0,
|
|
82
90
|
values: ValuesStatement.create({
|
|
83
91
|
fields,
|
|
84
92
|
values: [values]
|
|
@@ -91,12 +99,15 @@ export class BaseDriver {
|
|
|
91
99
|
for (const iterator of type.columns) {
|
|
92
100
|
const value = entity[iterator.name];
|
|
93
101
|
const assign = Expression.assign(Expression.identifier(iterator.columnName), Expression.constant(value));
|
|
94
|
-
if (iterator.key) {
|
|
102
|
+
if (entityKeys ? iterator.name in entityKeys : iterator.key) {
|
|
95
103
|
keys.push(assign);
|
|
96
104
|
insert.push(assign);
|
|
97
105
|
continue;
|
|
98
106
|
}
|
|
99
107
|
if (value === undefined) {
|
|
108
|
+
if (iterator.generated) {
|
|
109
|
+
returnFields.push(Expression.identifier(iterator.columnName));
|
|
110
|
+
}
|
|
100
111
|
continue;
|
|
101
112
|
}
|
|
102
113
|
insert.push(assign);
|
|
@@ -116,11 +127,18 @@ export class BaseDriver {
|
|
|
116
127
|
where
|
|
117
128
|
});
|
|
118
129
|
}
|
|
130
|
+
if (mode === "insert-select") {
|
|
131
|
+
update.length = 0;
|
|
132
|
+
}
|
|
119
133
|
return UpsertStatement.create({
|
|
120
134
|
table,
|
|
121
135
|
insert,
|
|
122
136
|
update,
|
|
123
|
-
keys
|
|
137
|
+
keys,
|
|
138
|
+
returnUpdated: returnFields.length ? ReturnUpdated.create({
|
|
139
|
+
changes: "INSERTED",
|
|
140
|
+
fields: returnFields
|
|
141
|
+
}) : void 0
|
|
124
142
|
});
|
|
125
143
|
}
|
|
126
144
|
createInsertExpression(type, entity) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDriver.js","sourceRoot":"","sources":["../../../src/drivers/base/BaseDriver.ts"],"names":[],"mappings":"AAEA,mDAAmD;AACnD,OAAO,6BAA6B,CAAC;AAMrC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAoB,UAAU,EAAE,UAAU,EAAE,eAAe,EAAY,aAAa,EAAmB,YAAY,EAAqB,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAqBtR,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAmC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ;IAC9F,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;IACtB,CAAC,CAAC,IAAI,CAAC;AAuBX,MAAM,OAAO,iBAAiB;IAI1B,YAAoB,EAAoB;QAApB,OAAE,GAAF,EAAE,CAAkB;QAFxC,0BAAqB,GAAG,KAAK,CAAC;IAEa,CAAC;IAE5C,MAAM;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC5B,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;SAC1B;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACvB,IAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC5B,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;SAC1B;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACJ;AAED,MAAM,OAAgB,cAAc;IAShC,YAAmB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACpD,CAAC;IAiBM,KAAK,CAAC,gBAAgB,CAAU,EAAqB;QACxD,IAAG,IAAI,CAAC,kBAAkB,EAAE;YACxB,sCAAsC;YACtC,oBAAoB;YACpB,OAAO,MAAM,EAAE,EAAE,CAAC;SACrB;QACD,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,EAAqB,CAAC;QAC1B,IAAI;YACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,GAAG,KAAK,CAAC;YACf,OAAO,MAAM,CAAC;SACjB;gBAAS;YACN,IAAI,MAAM,EAAE;gBACR,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;aACxB;YACD,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAClC;IACL,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"BaseDriver.js","sourceRoot":"","sources":["../../../src/drivers/base/BaseDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionToSqlServer.d.ts","sourceRoot":"","sources":["../../../src/drivers/sql-server/ExpressionToSqlServer.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAoC,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACrL,OAAO,EAAE,UAAU,EAAwB,MAAM,uCAAuC,CAAC;AAEzF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,eAAe;IAE9D,kBAAkB,CAAC,CAAC,EAAE,aAAa,GAAG,UAAU;IAkBhD,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU;IAuBpD,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"ExpressionToSqlServer.d.ts","sourceRoot":"","sources":["../../../src/drivers/sql-server/ExpressionToSqlServer.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAoC,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACrL,OAAO,EAAE,UAAU,EAAwB,MAAM,uCAAuC,CAAC;AAEzF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,eAAe;IAE9D,kBAAkB,CAAC,CAAC,EAAE,aAAa,GAAG,UAAU;IAkBhD,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU;IAuBpD,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU;IA6EpD,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU;IA8CpD,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU;IAUpD,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,GAAG,UAAU;CAG7D"}
|
|
@@ -43,6 +43,7 @@ export default class ExpressionToSqlServer extends ExpressionToSql {
|
|
|
43
43
|
const insertValues = [];
|
|
44
44
|
const updateSet = [];
|
|
45
45
|
const compare = [];
|
|
46
|
+
const keys = [];
|
|
46
47
|
for (const { left, right } of e.insert) {
|
|
47
48
|
const c = this.visit(left);
|
|
48
49
|
const v = this.visit(right);
|
|
@@ -58,16 +59,45 @@ export default class ExpressionToSqlServer extends ExpressionToSql {
|
|
|
58
59
|
const c = this.visit(left);
|
|
59
60
|
const v = this.visit(right);
|
|
60
61
|
compare.push(prepare `${c} = ${v}`);
|
|
62
|
+
keys.push(c);
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
const returnValues = e.returnUpdated ? this.visit(e.returnUpdated) : [];
|
|
65
|
+
if (!updateSet.length) {
|
|
66
|
+
if (e.returnUpdated) {
|
|
67
|
+
const fields = e.returnUpdated.fields.map((x) => this.visit(x));
|
|
68
|
+
return prepare `
|
|
69
|
+
SELECT ${prepareJoin(fields)} FROM ${table}
|
|
70
|
+
WHERE ${prepareJoin(compare, " AND ")};
|
|
71
|
+
IF @@ROWCOUNT=0
|
|
72
|
+
BEGIN
|
|
73
|
+
INSERT INTO ${table} (${prepareJoin(insertColumns)})
|
|
74
|
+
${returnValues}
|
|
75
|
+
SELECT * FROM (VALUES (${prepareJoin(insertValues)})) as A(${prepareJoin(insertColumns)})
|
|
76
|
+
WHERE NOT EXISTS (SELECT 1 FROM ${table} WHERE ${prepareJoin(compare, " AND ")});
|
|
77
|
+
END
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
return prepare ` SELECT ${prepareJoin(keys)} FROM ${table}
|
|
81
|
+
WHERE ${prepareJoin(compare, " AND ")};
|
|
82
|
+
IF @@ROWCOUNT=0
|
|
83
|
+
BEGIN
|
|
84
|
+
INSERT INTO ${table} (${prepareJoin(insertColumns)})
|
|
85
|
+
SELECT * FROM (VALUES (${prepareJoin(insertValues)})) as A(${prepareJoin(insertColumns)})
|
|
86
|
+
WHERE NOT EXISTS (SELECT 1 FROM ${table} WHERE ${prepareJoin(compare, " AND ")});
|
|
87
|
+
END;`;
|
|
88
|
+
}
|
|
89
|
+
return prepare `
|
|
90
|
+
UPDATE ${table}
|
|
91
|
+
SET
|
|
92
|
+
${prepareJoin(updateSet)}
|
|
93
|
+
WHERE ${prepareJoin(compare, " AND ")}
|
|
94
|
+
${returnValues};
|
|
65
95
|
IF @@ROWCOUNT=0
|
|
66
96
|
BEGIN
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
WHERE ${prepareJoin(compare, " AND ")}
|
|
97
|
+
INSERT INTO ${table} (${prepareJoin(insertColumns)})
|
|
98
|
+
${returnValues}
|
|
99
|
+
SELECT * FROM (VALUES (${prepareJoin(insertValues)})) as A(${prepareJoin(insertColumns)})
|
|
100
|
+
WHERE NOT EXISTS (SELECT 1 FROM ${table} WHERE ${prepareJoin(compare, " AND ")});
|
|
71
101
|
END;`;
|
|
72
102
|
}
|
|
73
103
|
visitSelectStatement(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionToSqlServer.js","sourceRoot":"","sources":["../../../src/drivers/sql-server/ExpressionToSqlServer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ExpressionToSqlServer.js","sourceRoot":"","sources":["../../../src/drivers/sql-server/ExpressionToSqlServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlServerDriver.d.ts","sourceRoot":"","sources":["../../../src/drivers/sql-server/SqlServerDriver.ts"],"names":[],"mappings":";AACA,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAC5D,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAoB,mBAAmB,EAAE,SAAS,EAAE,MAAM,EAAoB,MAAM,uBAAuB,CAAC;AAClK,OAAO,GAAG,MAAM,OAAO,CAAC;AAMxB,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;AAI1E,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IAQvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,OAAO,CAAC,gBAAgB,CAAgC;gBAE3B,MAAM,EAAE,0BAA0B;IAK/D,OAAO;IAIP,aAAa,IAAI,cAAc;CAGlC;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IAQ/B,OAAO,CAAC,MAAM;IANlC,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,KAAK,gBAAgB,GAE3B;gBAEW,MAAM,KAAA,EAAU,MAAM,EAAE,0BAA0B;IAIjD,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAcxE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlServerDriver.d.ts","sourceRoot":"","sources":["../../../src/drivers/sql-server/SqlServerDriver.ts"],"names":[],"mappings":";AACA,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAC5D,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAoB,mBAAmB,EAAE,SAAS,EAAE,MAAM,EAAoB,MAAM,uBAAuB,CAAC;AAClK,OAAO,GAAG,MAAM,OAAO,CAAC;AAMxB,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;AAI1E,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IAQvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,OAAO,CAAC,gBAAgB,CAAgC;gBAE3B,MAAM,EAAE,0BAA0B;IAK/D,OAAO;IAIP,aAAa,IAAI,cAAc;CAGlC;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IAQ/B,OAAO,CAAC,MAAM;IANlC,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,KAAK,gBAAgB,GAE3B;gBAEW,MAAM,KAAA,EAAU,MAAM,EAAE,0BAA0B;IAIjD,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAcxE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IA+BvE,cAAc;IAuBR,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAYrD,mBAAmB,IAAI,UAAU;cAIxB,UAAU,CAAC,MAAM,EAAE,WAAW;IAkB9C,OAAO,CAAC,aAAa;CAexB"}
|
|
@@ -54,7 +54,16 @@ export class SqlServerConnection extends BaseConnection {
|
|
|
54
54
|
}
|
|
55
55
|
try {
|
|
56
56
|
const r = await rq.query(command.text);
|
|
57
|
-
|
|
57
|
+
const rows = r.recordset ?? [r.output];
|
|
58
|
+
if (rows.length === 0) {
|
|
59
|
+
// do something..
|
|
60
|
+
const { recordsets } = r;
|
|
61
|
+
for (let index = 0; index < recordsets.length; index++) {
|
|
62
|
+
const element = r.recordsets[index];
|
|
63
|
+
rows.push(...element);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return { rows, updated: r.rowsAffected[0] };
|
|
58
67
|
}
|
|
59
68
|
catch (error) {
|
|
60
69
|
error = `Failed executing ${command.text}\r\n${error.stack ?? error}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlServerDriver.js","sourceRoot":"","sources":["../../../src/drivers/sql-server/SqlServerDriver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAqE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClK,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AACjE,OAAO,4BAA4B,MAAM,6DAA6D,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,UAAU,MAAM,kCAAkC,CAAC;AAI1D,MAAM,SAAS,GAAG,IAAI,UAAU,EAA8B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IAEnD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAID,YAA6B,MAAkC;QAC3D,KAAK,CAAC,MAAM,CAAC,CAAC;QADW,WAAM,GAAN,MAAM,CAA4B;QAFvD,qBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAIpD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,OAAO;QACH,aAAa;IACjB,CAAC;IAED,aAAa;QACT,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACJ;AAED,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IAInD,IAAY,gBAAgB;QACxB,OAAO,IAAI,CAAC,QAAkC,CAAC;IACnD,CAAC;IAED,YAAY,MAAM,EAAU,MAAkC;QAC1D,KAAK,CAAC,MAAM,CAAC,CAAC;QADU,WAAM,GAAN,MAAM,CAA4B;IAE9D,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,MAAoB;QAC5D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,OAAO,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;aACvC;SACJ;QAED,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACM,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,MAAoB;QAC3D,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,OAAO,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;aACvC;SACJ;QAED,IAAI;YACA,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,
|
|
1
|
+
{"version":3,"file":"SqlServerDriver.js","sourceRoot":"","sources":["../../../src/drivers/sql-server/SqlServerDriver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAqE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClK,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AACjE,OAAO,4BAA4B,MAAM,6DAA6D,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,UAAU,MAAM,kCAAkC,CAAC;AAI1D,MAAM,SAAS,GAAG,IAAI,UAAU,EAA8B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IAEnD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAID,YAA6B,MAAkC;QAC3D,KAAK,CAAC,MAAM,CAAC,CAAC;QADW,WAAM,GAAN,MAAM,CAA4B;QAFvD,qBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAIpD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,OAAO;QACH,aAAa;IACjB,CAAC;IAED,aAAa;QACT,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACJ;AAED,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IAInD,IAAY,gBAAgB;QACxB,OAAO,IAAI,CAAC,QAAkC,CAAC;IACnD,CAAC;IAED,YAAY,MAAM,EAAU,MAAkC;QAC1D,KAAK,CAAC,MAAM,CAAC,CAAC;QADU,WAAM,GAAN,MAAM,CAA4B;IAE9D,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,MAAoB;QAC5D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,OAAO,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;aACvC;SACJ;QAED,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACM,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,MAAoB;QAC3D,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,OAAO,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;aACvC;SACJ;QAED,IAAI;YACA,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnB,iBAAiB;gBACjB,MAAM,EAAE,UAAU,EAAE,GAAG,CAAQ,CAAC;gBAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACpD,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;iBACzB;aACJ;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,CAAE,CAAC,CAAC,EAAC,CAAC;SAC/C;QAAC,OAAO,KAAK,EAAE;YACZ,KAAK,GAAG,oBAAoB,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;IACL,CAAC;IAEM,cAAc;QACjB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,MAAM,GAAG,EAAE,GAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACvD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEhC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAG,wEAAwE,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;kCACtG,EAAE;gBACpB,CAAC;YACL,IAAI;gBACA,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACrC;YAAC,OAAM,KAAK,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;aAChF;QACL,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC1C,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACnE,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO,IAAI,iBAAiB,CAAC;YACzB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,UAAU,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YACtE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC3C,CAAC,CAAC;IACP,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnE,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,MAAmB;QAC1C,IAAI,OAAoB,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SACxC;aAAM;YACH,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SACpD;QACD,0BAA0B;QAC1B,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,OAAO,EAAE;gBAChB,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,cAAc,EAAE,CAAC;aAC3B;YACD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SAC3C;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;QACvE,OAAO,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ,EACrE,GAAG,EAAE;YACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC,CAAQ,CAAC;YACV,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAEpC,CAAC;CAEJ;AAED,MAAM,SAAS;IAQX,YACY,EAAe,EACf,OAAwC;QADxC,OAAE,GAAF,EAAE,CAAa;QACf,YAAO,GAAP,OAAO,CAAiC;QAR5C,YAAO,GAAU,EAAE,CAAC;QACpB,UAAK,GAAQ,IAAI,CAAC;QAClB,UAAK,GAAW,CAAC,CAAC;QAClB,UAAK,GAAG,KAAK,CAAC;IAKiC,CAAC;IAExD,KAAK,CAAC,CAAC,IAAI,CAAC,GAAY,EAAE,CAAe;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;QAEjB,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,KAAK,EAAE,CAAC,KAAK,CAAE,OAAe,CAAC,IAAI,CAAC,CAAC;QAErC,GAAG;YACC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAClB,KAAM,CAAC,CAAA,IAAI,CAAC;aACf;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,MAAM;aACT;YACD,MAAM,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACvC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;YACtC,CAAC,CAAC,CAAC;SACN,QAAQ,IAAI,EAAE;IACnB,CAAC;IACD,OAAO;QACH,qBAAqB;QACrB,wBAAwB;QACxB,IAAI;QACJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,CAAC,MAAM,CAAC,YAAY,CAAC;QACjB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;CAEJ"}
|
|
@@ -2,6 +2,7 @@ import type EntityContext from "./EntityContext.js";
|
|
|
2
2
|
import type EntityType from "../entity-query/EntityType.js";
|
|
3
3
|
import type { IEntityQuery, IFilterExpression } from "./IFilterWithParameter.js";
|
|
4
4
|
import { contextSymbol, modelSymbol } from "../common/symbols/symbols.js";
|
|
5
|
+
import { DirectSaveType } from "../drivers/base/BaseDriver.js";
|
|
5
6
|
export declare class EntitySource<T = any> {
|
|
6
7
|
private readonly model;
|
|
7
8
|
private readonly context;
|
|
@@ -10,7 +11,7 @@ export declare class EntitySource<T = any> {
|
|
|
10
11
|
get [contextSymbol](): EntityContext;
|
|
11
12
|
private filter;
|
|
12
13
|
constructor(model: EntityType, context: EntityContext);
|
|
13
|
-
saveDirect(item: Partial<T>, mode:
|
|
14
|
+
saveDirect(item: Partial<T>, mode: DirectSaveType, keys?: Partial<T>): Promise<Partial<T>>;
|
|
14
15
|
add(item: Partial<T>): T;
|
|
15
16
|
/**
|
|
16
17
|
* Entity can only be deleted if all primary keys are present
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySource.d.ts","sourceRoot":"","sources":["../../src/model/EntitySource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"EntitySource.d.ts","sourceRoot":"","sources":["../../src/model/EntitySource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,YAAY,CAAC,CAAC,GAAG,GAAG;IAkBzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBrB,UAAU,KAEf;IAEF,IAAI,CAAC,WAAW,CAAC,eAEhB;IAED,IAAG,CAAC,aAAa,CAAC,kBAEjB;IAED,OAAO,CAAC,MAAM,CAAa;gBAIN,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,aAAa;IAK9B,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAkB1E,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAa/B;;;OAGG;IACI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAkBvB,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC;IAItB,QAAQ,CAAC,IAAI,GAAE,MAAM,GAAG,QAAiB,GAAG,YAAY,CAAC,CAAC,CAAC;IAM3D,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAIpD,OAAO;IAYP,OAAO;;;;CAOjB"}
|
|
@@ -12,11 +12,22 @@ export class EntitySource {
|
|
|
12
12
|
this.context = context;
|
|
13
13
|
this.statements = {};
|
|
14
14
|
}
|
|
15
|
-
async saveDirect(item, mode) {
|
|
15
|
+
async saveDirect(item, mode, keys) {
|
|
16
16
|
const { driver } = this.context;
|
|
17
|
-
const expression = driver.createUpsertExpression(this.model, item, mode);
|
|
17
|
+
const expression = driver.createUpsertExpression(this.model, item, mode, keys);
|
|
18
18
|
const { text, values } = driver.compiler.compileExpression(null, expression);
|
|
19
|
-
await this.context.connection.executeQuery({ text, values });
|
|
19
|
+
const r = await this.context.connection.executeQuery({ text, values });
|
|
20
|
+
if (r.rows?.length) {
|
|
21
|
+
const first = r.rows[0];
|
|
22
|
+
for (const key in first) {
|
|
23
|
+
if (Object.prototype.hasOwnProperty.call(first, key)) {
|
|
24
|
+
const element = first[key];
|
|
25
|
+
const name = this.model.getColumn(key).name;
|
|
26
|
+
item[name] = element;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return item;
|
|
20
31
|
}
|
|
21
32
|
add(item) {
|
|
22
33
|
const p = Object.getPrototypeOf(item).constructor;
|