@stingerloom/orm 0.2.1 → 0.3.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.
- package/README.md +3 -3
- package/dist/core/AggregateQueryHandler.d.ts +17 -0
- package/dist/core/AggregateQueryHandler.d.ts.map +1 -0
- package/dist/core/AggregateQueryHandler.js +96 -0
- package/dist/core/AggregateQueryHandler.js.map +1 -0
- package/dist/core/CascadeHandler.d.ts +17 -0
- package/dist/core/CascadeHandler.d.ts.map +1 -0
- package/dist/core/CascadeHandler.js +106 -0
- package/dist/core/CascadeHandler.js.map +1 -0
- package/dist/core/Conditions.d.ts +2 -0
- package/dist/core/Conditions.d.ts.map +1 -1
- package/dist/core/Conditions.js +15 -1
- package/dist/core/Conditions.js.map +1 -1
- package/dist/core/EntityManager.d.ts +30 -45
- package/dist/core/EntityManager.d.ts.map +1 -1
- package/dist/core/EntityManager.js +483 -1501
- package/dist/core/EntityManager.js.map +1 -1
- package/dist/core/EntityManagerInternals.d.ts +28 -0
- package/dist/core/EntityManagerInternals.d.ts.map +1 -0
- package/dist/core/EntityManagerInternals.js +3 -0
- package/dist/core/EntityManagerInternals.js.map +1 -0
- package/dist/core/ExplainQueryHandler.d.ts +16 -0
- package/dist/core/ExplainQueryHandler.d.ts.map +1 -0
- package/dist/core/ExplainQueryHandler.js +236 -0
- package/dist/core/ExplainQueryHandler.js.map +1 -0
- package/dist/core/QueryTracker.d.ts +5 -1
- package/dist/core/QueryTracker.d.ts.map +1 -1
- package/dist/core/QueryTracker.js +75 -21
- package/dist/core/QueryTracker.js.map +1 -1
- package/dist/core/RelationLoader.d.ts +13 -0
- package/dist/core/RelationLoader.d.ts.map +1 -0
- package/dist/core/RelationLoader.js +206 -0
- package/dist/core/RelationLoader.js.map +1 -0
- package/dist/core/RelationMetadataResolver.d.ts +24 -0
- package/dist/core/RelationMetadataResolver.d.ts.map +1 -0
- package/dist/core/RelationMetadataResolver.js +182 -0
- package/dist/core/RelationMetadataResolver.js.map +1 -0
- package/dist/core/ReplicationManager.d.ts +11 -0
- package/dist/core/ReplicationManager.d.ts.map +1 -0
- package/dist/core/ReplicationManager.js +38 -0
- package/dist/core/ReplicationManager.js.map +1 -0
- package/dist/core/SchemaRegistrar.d.ts +15 -0
- package/dist/core/SchemaRegistrar.d.ts.map +1 -0
- package/dist/core/SchemaRegistrar.js +238 -0
- package/dist/core/SchemaRegistrar.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -1
- package/dist/decorators/Entity.d.ts.map +1 -1
- package/dist/decorators/Entity.js +9 -3
- package/dist/decorators/Entity.js.map +1 -1
- package/dist/decorators/Version.d.ts.map +1 -1
- package/dist/decorators/Version.js +3 -3
- package/dist/decorators/Version.js.map +1 -1
- package/dist/dialects/FindOption.d.ts +2 -2
- package/dist/dialects/FindOption.d.ts.map +1 -1
- package/dist/dialects/TransactionSessionManager.d.ts.map +1 -1
- package/dist/dialects/TransactionSessionManager.js +5 -2
- package/dist/dialects/TransactionSessionManager.js.map +1 -1
- package/dist/dialects/mysql/MySqlDataSource.d.ts.map +1 -1
- package/dist/dialects/mysql/MySqlDataSource.js +3 -0
- package/dist/dialects/mysql/MySqlDataSource.js.map +1 -1
- package/dist/dialects/mysql/MySqlDriver.d.ts.map +1 -1
- package/dist/dialects/mysql/MySqlDriver.js +9 -3
- package/dist/dialects/mysql/MySqlDriver.js.map +1 -1
- package/dist/dialects/postgres/PostgresDataSource.d.ts.map +1 -1
- package/dist/dialects/postgres/PostgresDataSource.js +3 -0
- package/dist/dialects/postgres/PostgresDataSource.js.map +1 -1
- package/dist/dialects/postgres/PostgresDriver.d.ts.map +1 -1
- package/dist/dialects/postgres/PostgresDriver.js +4 -0
- package/dist/dialects/postgres/PostgresDriver.js.map +1 -1
- package/dist/dialects/sqlite/SqliteDataSource.d.ts.map +1 -1
- package/dist/dialects/sqlite/SqliteDataSource.js +3 -0
- package/dist/dialects/sqlite/SqliteDataSource.js.map +1 -1
- package/dist/dialects/sqlite/SqliteDriver.d.ts.map +1 -1
- package/dist/dialects/sqlite/SqliteDriver.js +4 -0
- package/dist/dialects/sqlite/SqliteDriver.js.map +1 -1
- package/dist/errors/DatabaseConnectionFailedError.d.ts +2 -1
- package/dist/errors/DatabaseConnectionFailedError.d.ts.map +1 -1
- package/dist/errors/DatabaseConnectionFailedError.js +12 -2
- package/dist/errors/DatabaseConnectionFailedError.js.map +1 -1
- package/dist/errors/OptimisticLockError.d.ts +5 -0
- package/dist/errors/OptimisticLockError.d.ts.map +1 -0
- package/dist/errors/OptimisticLockError.js +14 -0
- package/dist/errors/OptimisticLockError.js.map +1 -0
- package/dist/errors/OrmErrorCode.d.ts +3 -1
- package/dist/errors/OrmErrorCode.d.ts.map +1 -1
- package/dist/errors/OrmErrorCode.js +2 -0
- package/dist/errors/OrmErrorCode.js.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/validateSavepointName.d.ts +2 -0
- package/dist/utils/validateSavepointName.d.ts.map +1 -0
- package/dist/utils/validateSavepointName.js +12 -0
- package/dist/utils/validateSavepointName.js.map +1 -0
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
<p align="center">
|
|
5
5
|
<a href="https://www.npmjs.com/package/@stingerloom/orm"><img src="https://img.shields.io/npm/v/@stingerloom/orm" alt="npm" /></a>
|
|
6
|
-
<img src="https://img.shields.io/badge/tests-1%
|
|
6
|
+
<img src="https://img.shields.io/badge/tests-1%2C348%20passed-brightgreen" alt="Tests" />
|
|
7
7
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License" />
|
|
8
8
|
<img src="https://img.shields.io/badge/TypeScript-strict-3178C6?logo=typescript&logoColor=white" alt="TypeScript" />
|
|
9
9
|
</p>
|
|
@@ -170,10 +170,10 @@ const migration = new SchemaDiffMigrationGenerator().generate(diff, "mysql");
|
|
|
170
170
|
|
|
171
171
|
## Test Status
|
|
172
172
|
|
|
173
|
-
- **1,
|
|
173
|
+
- **1,348** unit tests passed, 0 failures
|
|
174
174
|
- **4** example projects type-checked (nestjs-cats, nestjs-blog, nestjs-multitenant, nestjs-todo)
|
|
175
175
|
- **6** SQL injection vectors patched and audited across all drivers
|
|
176
176
|
|
|
177
177
|
## Documentation
|
|
178
178
|
|
|
179
|
-
Full documentation available at [
|
|
179
|
+
Full documentation available at [biud436.github.io/stingerloom-orm](https://biud436.github.io/stingerloom-orm/).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ClazzType } from "../utils";
|
|
2
|
+
import { WhereClause } from "../dialects/FindOption";
|
|
3
|
+
import { TransactionSessionManager } from "../dialects/TransactionSessionManager";
|
|
4
|
+
import { RelationMetadataResolver } from "./RelationMetadataResolver";
|
|
5
|
+
import { EntityManagerInternals } from "./EntityManagerInternals";
|
|
6
|
+
export declare class AggregateQueryHandler {
|
|
7
|
+
private readonly resolver;
|
|
8
|
+
private readonly ctx;
|
|
9
|
+
constructor(resolver: RelationMetadataResolver, ctx: EntityManagerInternals);
|
|
10
|
+
aggregate<T>(entity: ClazzType<T>, fn: string, field: string, where?: WhereClause<T>, existingSession?: TransactionSessionManager): Promise<number>;
|
|
11
|
+
count<T>(entity: ClazzType<T>, where?: WhereClause<T>): Promise<number>;
|
|
12
|
+
sum<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
13
|
+
avg<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
14
|
+
min<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
15
|
+
max<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=AggregateQueryHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AggregateQueryHandler.d.ts","sourceRoot":"","sources":["../../src/core/AggregateQueryHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAKlF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,QAAQ,EAAE,wBAAwB,EAClC,GAAG,EAAE,sBAAsB;IAGxC,SAAS,CAAC,CAAC,EACf,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,eAAe,CAAC,EAAE,yBAAyB,GAC1C,OAAO,CAAC,MAAM,CAAC;IA2CZ,KAAK,CAAC,CAAC,EACX,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;IAIZ,GAAG,CAAC,CAAC,EACT,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;IAIZ,GAAG,CAAC,CAAC,EACT,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;IAIZ,GAAG,CAAC,CAAC,EACT,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;IAIZ,GAAG,CAAC,CAAC,EACT,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;CAGnB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AggregateQueryHandler = void 0;
|
|
37
|
+
const sql_template_tag_1 = __importStar(require("sql-template-tag"));
|
|
38
|
+
const Conditions_1 = require("./Conditions");
|
|
39
|
+
const EntityMetadataNotFoundError_1 = require("../errors/EntityMetadataNotFoundError");
|
|
40
|
+
class AggregateQueryHandler {
|
|
41
|
+
constructor(resolver, ctx) {
|
|
42
|
+
this.resolver = resolver;
|
|
43
|
+
this.ctx = ctx;
|
|
44
|
+
}
|
|
45
|
+
async aggregate(entity, fn, field, where, existingSession) {
|
|
46
|
+
const metadata = this.resolver.resolveEntityMetadata(entity);
|
|
47
|
+
if (!metadata) {
|
|
48
|
+
throw new EntityMetadataNotFoundError_1.EntityMetadataNotFoundError(entity.name);
|
|
49
|
+
}
|
|
50
|
+
return this.ctx.executeInTransaction(async (session) => {
|
|
51
|
+
const tableName = metadata.name;
|
|
52
|
+
const selectExpr = (0, sql_template_tag_1.raw)(`${fn}(${field === "*" ? "*" : this.ctx.wrap(field)})`);
|
|
53
|
+
const whereMap = [];
|
|
54
|
+
if (where) {
|
|
55
|
+
for (const key in where) {
|
|
56
|
+
const value = where[key];
|
|
57
|
+
if (value !== undefined && value !== null) {
|
|
58
|
+
whereMap.push(Conditions_1.Conditions.equals(this.ctx.wrap(key), value));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
let queryStr;
|
|
63
|
+
if (whereMap.length > 0) {
|
|
64
|
+
const whereSql = (0, sql_template_tag_1.join)(whereMap, " AND ");
|
|
65
|
+
queryStr = (0, sql_template_tag_1.default) `SELECT ${selectExpr} AS ${(0, sql_template_tag_1.raw)(this.ctx.wrap("result"))} FROM ${(0, sql_template_tag_1.raw)(this.ctx.wrap(tableName))} WHERE ${whereSql}`;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
queryStr = (0, sql_template_tag_1.default) `SELECT ${selectExpr} AS ${(0, sql_template_tag_1.raw)(this.ctx.wrap("result"))} FROM ${(0, sql_template_tag_1.raw)(this.ctx.wrap(tableName))}`;
|
|
69
|
+
}
|
|
70
|
+
const queryResult = (await session.query(queryStr));
|
|
71
|
+
const { results } = queryResult;
|
|
72
|
+
if (!results || results.length === 0)
|
|
73
|
+
return 0;
|
|
74
|
+
const row = results[0];
|
|
75
|
+
const value = row.result ?? row["result"];
|
|
76
|
+
return value === null || value === undefined ? 0 : Number(value);
|
|
77
|
+
}, existingSession);
|
|
78
|
+
}
|
|
79
|
+
async count(entity, where) {
|
|
80
|
+
return this.aggregate(entity, "COUNT", "*", where);
|
|
81
|
+
}
|
|
82
|
+
async sum(entity, field, where) {
|
|
83
|
+
return this.aggregate(entity, "SUM", field, where);
|
|
84
|
+
}
|
|
85
|
+
async avg(entity, field, where) {
|
|
86
|
+
return this.aggregate(entity, "AVG", field, where);
|
|
87
|
+
}
|
|
88
|
+
async min(entity, field, where) {
|
|
89
|
+
return this.aggregate(entity, "MIN", field, where);
|
|
90
|
+
}
|
|
91
|
+
async max(entity, field, where) {
|
|
92
|
+
return this.aggregate(entity, "MAX", field, where);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.AggregateQueryHandler = AggregateQueryHandler;
|
|
96
|
+
//# sourceMappingURL=AggregateQueryHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AggregateQueryHandler.js","sourceRoot":"","sources":["../../src/core/AggregateQueryHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,qEAAuD;AACvD,6CAA0C;AAE1C,uFAAoF;AAQpF,MAAa,qBAAqB;IAChC,YACmB,QAAkC,EAClC,GAA2B;QAD3B,aAAQ,GAAR,QAAQ,CAA0B;QAClC,QAAG,GAAH,GAAG,CAAwB;IAC3C,CAAC;IAEJ,KAAK,CAAC,SAAS,CACb,MAAoB,EACpB,EAAU,EACV,KAAa,EACb,KAAsB,EACtB,eAA2C;QAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,yDAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAK,CAAC;YACjC,MAAM,UAAU,GAAG,IAAA,sBAAG,EACpB,GAAG,EAAE,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACvD,CAAC;YAEF,MAAM,QAAQ,GAAU,EAAE,CAAC;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,MAAM,KAAK,GAAI,KAAa,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC1C,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,QAAa,CAAC;YAClB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAA,uBAAI,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACzC,QAAQ,GAAG,IAAA,0BAAG,EAAA,UAAU,UAAU,OAAO,IAAA,sBAAG,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAA,sBAAG,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,QAAQ,EAAE,CAAC;YAClI,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAA,0BAAG,EAAA,UAAU,UAAU,OAAO,IAAA,sBAAG,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAA,sBAAG,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAChH,CAAC;YAED,MAAM,WAAW,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CACtC,QAAQ,CACT,CAAgB,CAAC;YAElB,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAE/C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC,EAAE,eAAe,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CACT,MAAoB,EACpB,KAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAAoB,EACpB,KAAuB,EACvB,KAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAAoB,EACpB,KAAuB,EACvB,KAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAAoB,EACpB,KAAuB,EACvB,KAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAAoB,EACpB,KAAuB,EACvB,KAAsB;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;CACF;AA7FD,sDA6FC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { ClazzType } from "../utils";
|
|
3
|
+
import { WhereClause } from "../dialects/FindOption";
|
|
4
|
+
import { HookEvent } from "../decorators";
|
|
5
|
+
import { RelationMetadataResolver } from "./RelationMetadataResolver";
|
|
6
|
+
import { EntityManagerInternals } from "./EntityManagerInternals";
|
|
7
|
+
export declare class CascadeHandler {
|
|
8
|
+
private readonly resolver;
|
|
9
|
+
private readonly ctx;
|
|
10
|
+
constructor(resolver: RelationMetadataResolver, ctx: EntityManagerInternals);
|
|
11
|
+
runHooks<T>(entity: ClazzType<T>, item: Partial<T>, event: HookEvent): Promise<void>;
|
|
12
|
+
createProxy<T>(entity: T): T;
|
|
13
|
+
cascadeSaveOneToMany<T>(entity: ClazzType<T>, item: Partial<T>, savedParentId: any): Promise<void>;
|
|
14
|
+
cascadeSaveManyToOne<T>(entity: ClazzType<T>, item: Partial<T>): Promise<void>;
|
|
15
|
+
cascadeDeleteOneToMany<T>(entity: ClazzType<T>, criteria: WhereClause<T>): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=CascadeHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CascadeHandler.d.ts","sourceRoot":"","sources":["../../src/core/CascadeHandler.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAc,SAAS,EAAgB,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,QAAQ,EAAE,wBAAwB,EAClC,GAAG,EAAE,sBAAsB;IAOxC,QAAQ,CAAC,CAAC,EACd,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;IAkBhB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAetB,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,IAAI,CAAC;IAmCV,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,IAAI,CAAC;IAgCV,sBAAsB,CAAC,CAAC,EAC5B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC;CA0CjB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CascadeHandler = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const decorators_1 = require("../decorators");
|
|
6
|
+
const CascadeType_1 = require("../types/CascadeType");
|
|
7
|
+
class CascadeHandler {
|
|
8
|
+
constructor(resolver, ctx) {
|
|
9
|
+
this.resolver = resolver;
|
|
10
|
+
this.ctx = ctx;
|
|
11
|
+
}
|
|
12
|
+
async runHooks(entity, item, event) {
|
|
13
|
+
const hooks = Reflect.getMetadata(decorators_1.HOOK_TOKEN, entity);
|
|
14
|
+
if (!hooks || hooks.length === 0)
|
|
15
|
+
return;
|
|
16
|
+
for (const hook of hooks) {
|
|
17
|
+
if (hook.event !== event)
|
|
18
|
+
continue;
|
|
19
|
+
const method = item[hook.methodName];
|
|
20
|
+
if (typeof method === "function") {
|
|
21
|
+
await method.call(item);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
createProxy(entity) {
|
|
26
|
+
return new Proxy(entity, {
|
|
27
|
+
set: (target, prop, value) => {
|
|
28
|
+
target[prop] = value;
|
|
29
|
+
this.ctx.markDirty(target);
|
|
30
|
+
return true;
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async cascadeSaveOneToMany(entity, item, savedParentId) {
|
|
35
|
+
const oneToManyMeta = this.resolver.resolveOneToManyMetadata(entity);
|
|
36
|
+
for (const rel of oneToManyMeta) {
|
|
37
|
+
const children = item[rel.propertyKey];
|
|
38
|
+
if (!children || !Array.isArray(children) || children.length === 0)
|
|
39
|
+
continue;
|
|
40
|
+
const RelatedEntity = rel.getRelatedEntity();
|
|
41
|
+
if (!(0, CascadeType_1.hasCascade)(rel.cascade, "insert") &&
|
|
42
|
+
!(0, CascadeType_1.hasCascade)(rel.cascade, "update"))
|
|
43
|
+
continue;
|
|
44
|
+
const manyToOneItems = this.resolver.resolveManyToOneMetadata(RelatedEntity);
|
|
45
|
+
const matchingRelation = manyToOneItems.find((m) => m.columnName === rel.mappedBy);
|
|
46
|
+
const fkColumn = matchingRelation?.joinColumn ?? rel.mappedBy;
|
|
47
|
+
for (const child of children) {
|
|
48
|
+
child[fkColumn] = savedParentId;
|
|
49
|
+
await this.ctx.save(RelatedEntity, child);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async cascadeSaveManyToOne(entity, item) {
|
|
54
|
+
const manyToOneRelations = this.resolver.resolveManyToOneMetadata(entity);
|
|
55
|
+
for (const rel of manyToOneRelations) {
|
|
56
|
+
const relatedValue = item[rel.columnName];
|
|
57
|
+
if (!relatedValue || typeof relatedValue !== "object")
|
|
58
|
+
continue;
|
|
59
|
+
if (!(0, CascadeType_1.hasCascade)(rel.option?.cascade, "insert") &&
|
|
60
|
+
!(0, CascadeType_1.hasCascade)(rel.option?.cascade, "update"))
|
|
61
|
+
continue;
|
|
62
|
+
const RelatedEntity = rel.getMappingEntity();
|
|
63
|
+
const saved = await this.ctx.save(RelatedEntity, relatedValue);
|
|
64
|
+
const relatedMetadata = this.resolver.resolveEntityMetadata(RelatedEntity);
|
|
65
|
+
if (relatedMetadata) {
|
|
66
|
+
const relatedPk = relatedMetadata.columns.find((col) => col.options?.primary);
|
|
67
|
+
if (relatedPk && rel.joinColumn) {
|
|
68
|
+
item[rel.joinColumn] = saved[relatedPk.name];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async cascadeDeleteOneToMany(entity, criteria) {
|
|
74
|
+
const oneToManyMeta = this.resolver.resolveOneToManyMetadata(entity);
|
|
75
|
+
for (const rel of oneToManyMeta) {
|
|
76
|
+
if (!(0, CascadeType_1.hasCascade)(rel.cascade, "delete"))
|
|
77
|
+
continue;
|
|
78
|
+
const RelatedEntity = rel.getRelatedEntity();
|
|
79
|
+
const parentMetadata = this.resolver.resolveEntityMetadata(entity);
|
|
80
|
+
if (!parentMetadata)
|
|
81
|
+
continue;
|
|
82
|
+
const pk = parentMetadata.columns.find((col) => col.options?.primary);
|
|
83
|
+
if (!pk)
|
|
84
|
+
continue;
|
|
85
|
+
const parents = await this.ctx.find(entity, {
|
|
86
|
+
where: criteria,
|
|
87
|
+
});
|
|
88
|
+
if (!parents)
|
|
89
|
+
continue;
|
|
90
|
+
const parentArray = Array.isArray(parents) ? parents : [parents];
|
|
91
|
+
const manyToOneItems = this.resolver.resolveManyToOneMetadata(RelatedEntity);
|
|
92
|
+
const matchingRelation = manyToOneItems.find((m) => m.columnName === rel.mappedBy);
|
|
93
|
+
const fkColumn = matchingRelation?.joinColumn ?? rel.mappedBy;
|
|
94
|
+
for (const parent of parentArray) {
|
|
95
|
+
const parentId = parent[pk.name];
|
|
96
|
+
if (parentId === undefined || parentId === null)
|
|
97
|
+
continue;
|
|
98
|
+
await this.ctx.delete(RelatedEntity, {
|
|
99
|
+
[fkColumn]: parentId,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.CascadeHandler = CascadeHandler;
|
|
106
|
+
//# sourceMappingURL=CascadeHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CascadeHandler.js","sourceRoot":"","sources":["../../src/core/CascadeHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,8 @@ export declare class Conditions {
|
|
|
17
17
|
static or(conditions: Sql[]): Sql;
|
|
18
18
|
static and(conditions: Sql[]): Sql;
|
|
19
19
|
static raw(condition: string): Sql;
|
|
20
|
+
static unsafeRaw(condition: string): Sql;
|
|
21
|
+
private static readonly ALLOWED_AGGREGATES;
|
|
20
22
|
static aggregate(fn: string, column: string): Sql;
|
|
21
23
|
static count(column: string): Sql;
|
|
22
24
|
static sum(column: string): Sql;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Conditions.d.ts","sourceRoot":"","sources":["../../src/core/Conditions.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,GAAG,EAAa,MAAM,kBAAkB,CAAC;AAEvD,qBAAa,UAAU;IAIrB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAO9C,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAOjD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG;IAU7C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG;IAUhD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG;IAOjD,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG;IAOpD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IAOlC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IAOrC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG;IAOzD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG;IAO5D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAUhD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAO3C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAUhD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAO3C,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG;IAOjC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG;
|
|
1
|
+
{"version":3,"file":"Conditions.d.ts","sourceRoot":"","sources":["../../src/core/Conditions.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Conditions.js
CHANGED
|
@@ -91,10 +91,17 @@ class Conditions {
|
|
|
91
91
|
return (0, sql_template_tag_1.default) `(${(0, sql_template_tag_1.join)(conditions, " AND ")})`;
|
|
92
92
|
}
|
|
93
93
|
static raw(condition) {
|
|
94
|
+
return Conditions.unsafeRaw(condition);
|
|
95
|
+
}
|
|
96
|
+
static unsafeRaw(condition) {
|
|
94
97
|
return (0, sql_template_tag_1.default) `${(0, sql_template_tag_1.raw)(condition)}`;
|
|
95
98
|
}
|
|
96
99
|
static aggregate(fn, column) {
|
|
97
|
-
|
|
100
|
+
const normalized = fn.trim().toUpperCase();
|
|
101
|
+
if (!Conditions.ALLOWED_AGGREGATES.includes(normalized)) {
|
|
102
|
+
throw new Error(`Unsupported aggregate function: "${fn}". Allowed: ${Conditions.ALLOWED_AGGREGATES.join(", ")}`);
|
|
103
|
+
}
|
|
104
|
+
return (0, sql_template_tag_1.default) `${(0, sql_template_tag_1.raw)(normalized)}(${(0, sql_template_tag_1.raw)(column)})`;
|
|
98
105
|
}
|
|
99
106
|
static count(column) {
|
|
100
107
|
return this.aggregate("COUNT", column);
|
|
@@ -137,6 +144,13 @@ class Conditions {
|
|
|
137
144
|
}
|
|
138
145
|
}
|
|
139
146
|
exports.Conditions = Conditions;
|
|
147
|
+
Conditions.ALLOWED_AGGREGATES = [
|
|
148
|
+
"COUNT",
|
|
149
|
+
"SUM",
|
|
150
|
+
"AVG",
|
|
151
|
+
"MIN",
|
|
152
|
+
"MAX",
|
|
153
|
+
];
|
|
140
154
|
Conditions.ALLOWED_OPERATORS = [
|
|
141
155
|
"=",
|
|
142
156
|
"!=",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Conditions.js","sourceRoot":"","sources":["../../src/core/Conditions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Conditions.js","sourceRoot":"","sources":["../../src/core/Conditions.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,16 +23,29 @@ export declare class EntityManager implements BaseEntityManager {
|
|
|
23
23
|
private dirtyEntities;
|
|
24
24
|
private readonly eventEmitter;
|
|
25
25
|
private readonly subscribers;
|
|
26
|
+
private readonly cursorPkWarned;
|
|
26
27
|
private queryTracker;
|
|
27
28
|
private defaultQueryTimeout;
|
|
28
|
-
private replicationRouter;
|
|
29
29
|
private connectionName;
|
|
30
30
|
private dbType;
|
|
31
|
+
private readonly resolver;
|
|
32
|
+
private readonly replication;
|
|
33
|
+
private readonly _ctx;
|
|
34
|
+
private readonly cascadeHandler;
|
|
35
|
+
private readonly relationLoader;
|
|
36
|
+
private readonly schemaRegistrar;
|
|
37
|
+
private readonly explainHandler;
|
|
38
|
+
private readonly aggregateHandler;
|
|
31
39
|
register(databaseClientOptions: DatabaseClientOptions, connectionName?: string): Promise<void>;
|
|
32
40
|
get client(): DatabaseClient;
|
|
33
41
|
get connection(): any;
|
|
34
42
|
getConnectionName(): string;
|
|
35
43
|
connect(databaseClientOptions: DatabaseClientOptions, connectionName?: string): Promise<void>;
|
|
44
|
+
propagateShutdown(options?: {
|
|
45
|
+
gracefulTimeoutMs?: number;
|
|
46
|
+
closeConnections?: boolean;
|
|
47
|
+
}): Promise<boolean>;
|
|
48
|
+
getNameStrategy<T>(clazz: ClazzType<T>): string;
|
|
36
49
|
private initQueryTracker;
|
|
37
50
|
getQueryLog(): ReadonlyArray<QueryLogEntry>;
|
|
38
51
|
getQueryTracker(): QueryTracker | null;
|
|
@@ -49,66 +62,38 @@ export declare class EntityManager implements BaseEntityManager {
|
|
|
49
62
|
removeSubscriber(subscriber: EntitySubscriber<any>): void;
|
|
50
63
|
private notifySubscribers;
|
|
51
64
|
private notifyTransactionSubscribers;
|
|
52
|
-
propagateShutdown(options?: {
|
|
53
|
-
gracefulTimeoutMs?: number;
|
|
54
|
-
closeConnections?: boolean;
|
|
55
|
-
}): Promise<boolean>;
|
|
56
|
-
getNameStrategy<T>(clazz: ClazzType<T>): string;
|
|
57
|
-
private resolveEntityMetadata;
|
|
58
|
-
private getDeletedAtColumn;
|
|
59
|
-
private getCreateTimestampColumn;
|
|
60
|
-
private getUpdateTimestampColumn;
|
|
61
|
-
private runHooks;
|
|
62
|
-
private createProxy;
|
|
63
|
-
private registerEntities;
|
|
64
|
-
private registerUniqueIndexes;
|
|
65
|
-
private registerManyToManyJoinTables;
|
|
66
|
-
private resolveManyToOneMetadata;
|
|
67
|
-
private resolveJoinColumnsFromColumnMeta;
|
|
68
|
-
private resolveOneToManyMetadata;
|
|
69
|
-
private loadOneToManyRelations;
|
|
70
|
-
private resolveManyToManyMetadata;
|
|
71
|
-
private resolveOneToOneMetadata;
|
|
72
|
-
private resolveJoinColumnsFromColumnMetaForOneToOne;
|
|
73
|
-
private resolveManyToManyJoinTable;
|
|
74
|
-
private loadManyToManyRelations;
|
|
75
|
-
private loadOneToOneRelations;
|
|
76
|
-
private registerForeignKeys;
|
|
77
|
-
private registerIndex;
|
|
78
65
|
findOne<T>(entity: ClazzType<T>, findOption: FindOption<T>): Promise<T | null>;
|
|
79
|
-
|
|
80
|
-
private parseExplainResult;
|
|
81
|
-
private parseMysqlExplain;
|
|
82
|
-
private parsePostgresExplain;
|
|
83
|
-
private parseSqliteExplain;
|
|
84
|
-
findWithCursor<T>(entity: ClazzType<T>, option?: CursorPaginationOption<T>): Promise<CursorPaginationResult<T>>;
|
|
66
|
+
private findOneInternal;
|
|
85
67
|
find<T>(entity: ClazzType<T>, findOption?: FindOption<T>): Promise<EntityResult<T>>;
|
|
86
|
-
private
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
private isPostgres;
|
|
68
|
+
private findInternal;
|
|
69
|
+
findWithCursor<T>(entity: ClazzType<T>, option?: CursorPaginationOption<T>): Promise<CursorPaginationResult<T>>;
|
|
70
|
+
findAndCount<T>(entity: ClazzType<T>, findOption?: FindOption<T>): Promise<[T[], number]>;
|
|
90
71
|
save<T>(entity: ClazzType<T>, item: Partial<T>): Promise<InstanceType<ClazzType<T>>>;
|
|
91
|
-
|
|
72
|
+
private saveInternal;
|
|
92
73
|
saveMany<T>(entity: ClazzType<T>, items: Partial<T>[]): Promise<InstanceType<ClazzType<T>>[]>;
|
|
93
74
|
insertMany<T>(entity: ClazzType<T>, items: Partial<T>[]): Promise<{
|
|
94
75
|
affected: number;
|
|
95
76
|
}>;
|
|
96
|
-
upsert<T>(entity: ClazzType<T>, data: Partial<T>, conflictColumns?: string[]): Promise<void>;
|
|
97
|
-
private buildUpsertQuery;
|
|
98
77
|
delete<T>(entity: ClazzType<T>, criteria: WhereClause<T>): Promise<DeleteResult>;
|
|
78
|
+
deleteMany<T>(entity: ClazzType<T>, ids: any[]): Promise<DeleteResult>;
|
|
99
79
|
clear<T>(entity: ClazzType<T>): Promise<void>;
|
|
100
80
|
softDelete<T>(entity: ClazzType<T>, criteria: WhereClause<T>): Promise<DeleteResult>;
|
|
101
81
|
restore<T>(entity: ClazzType<T>, criteria: WhereClause<T>): Promise<DeleteResult>;
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
private cascadeDeleteOneToMany;
|
|
105
|
-
private aggregate;
|
|
82
|
+
upsert<T>(entity: ClazzType<T>, data: Partial<T>, conflictColumns?: string[]): Promise<void>;
|
|
83
|
+
private buildUpsertQuery;
|
|
106
84
|
count<T>(entity: ClazzType<T>, where?: WhereClause<T>): Promise<number>;
|
|
107
|
-
findAndCount<T>(entity: ClazzType<T>, findOption?: FindOption<T>): Promise<[T[], number]>;
|
|
108
85
|
sum<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
109
86
|
avg<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
110
87
|
min<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
111
88
|
max<T>(entity: ClazzType<T>, field: keyof T & string, where?: WhereClause<T>): Promise<number>;
|
|
89
|
+
explain<T>(entity: ClazzType<T>, findOption?: FindOption<T>): Promise<ExplainResult>;
|
|
90
|
+
wrap(columnName: string): any;
|
|
91
|
+
private isMySqlFamily;
|
|
92
|
+
private isPostgres;
|
|
93
|
+
private isSqlite;
|
|
94
|
+
private warnIfNonSortablePk;
|
|
95
|
+
private executeInTransaction;
|
|
96
|
+
private resolveSelectColumns;
|
|
112
97
|
query<T = Record<string, unknown>>(sqlQuery: string | Sql, params?: unknown[]): Promise<T[]>;
|
|
113
98
|
getRepository<T>(entity: ClazzType<T>): BaseRepository<T>;
|
|
114
99
|
withTenant<R>(tenantId: string, callback: (em: this) => Promise<R>): Promise<R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityManager.d.ts","sourceRoot":"","sources":["../../src/core/EntityManager.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"EntityManager.d.ts","sourceRoot":"","sources":["../../src/core/EntityManager.ts"],"names":[],"mappings":"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"}
|