@wisemen/nestjs-typeorm 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/columns/coordinates-column.js +1 -1
- package/dist/columns/coordinates-column.js.map +1 -1
- package/dist/extensions/repository.d.ts +3 -1
- package/dist/extensions/repository.js +30 -1
- package/dist/extensions/repository.js.map +1 -1
- package/dist/extensions/transaction.js +0 -4
- package/dist/extensions/transaction.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types/coordinates.d.ts +8 -0
- package/dist/types/coordinates.js +28 -0
- package/dist/types/coordinates.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { applyDecorators } from '@nestjs/common';
|
|
2
|
-
import { Coordinates } from '@wisemen/coordinates';
|
|
3
2
|
import { Column } from 'typeorm';
|
|
3
|
+
import { Coordinates } from '../types/coordinates.js';
|
|
4
4
|
export function CoordinatesColumn(options) {
|
|
5
5
|
return applyDecorators(Column({
|
|
6
6
|
...options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinates-column.js","sourceRoot":"","sources":["../../lib/columns/coordinates-column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"coordinates-column.js","sourceRoot":"","sources":["../../lib/columns/coordinates-column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAwB,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAIrD,MAAM,UAAU,iBAAiB,CAAE,OAAkC;IACnE,OAAO,eAAe,CACpB,MAAM,CAAC;QACL,GAAG,OAAO;QACV,IAAI,EAAE,UAAU;QAChB,kBAAkB,EAAE,OAAO;QAC3B,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,sBAAsB,CAAC,WAAW,EAAE;KAClD,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,sBAAsB;IAClB,MAAM,CAAC,QAAQ,CAAoC;IAEpD,MAAM,CAAC,WAAW;QACvB,IAAI,sBAAsB,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClD,sBAAsB,CAAC,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAA;QAChE,CAAC;QACD,OAAO,sBAAsB,CAAC,QAAQ,CAAA;IACxC,CAAC;IAED,IAAI,CAAE,KAAmB;QACvB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,EAAE,CAAE,KAAyB;QAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,CAAA;IACjC,CAAC;CACF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { type EntityManager, type EntityTarget, ObjectLiteral, Repository } from 'typeorm';
|
|
1
|
+
import { type EntityManager, type EntityTarget, FindOneOptions, FindOptionsWhere, ObjectLiteral, Repository } from 'typeorm';
|
|
2
2
|
export declare class TypeOrmRepository<T extends ObjectLiteral> extends Repository<T> {
|
|
3
3
|
constructor(entity: EntityTarget<T>, manager: EntityManager);
|
|
4
|
+
findInBatches(options: FindOneOptions<T>, batchSize: number): AsyncGenerator<T[], void, void>;
|
|
5
|
+
findByInBatches(where: FindOptionsWhere<T> | FindOptionsWhere<T>[], batchSize: number): AsyncGenerator<T[], void, void>;
|
|
4
6
|
}
|
|
@@ -1,8 +1,37 @@
|
|
|
1
|
-
import { Repository } from 'typeorm';
|
|
1
|
+
import { MoreThan, Repository } from 'typeorm';
|
|
2
2
|
import { createTransactionManagerProxy } from './transaction.js';
|
|
3
3
|
export class TypeOrmRepository extends Repository {
|
|
4
4
|
constructor(entity, manager) {
|
|
5
5
|
super(entity, createTransactionManagerProxy(manager));
|
|
6
6
|
}
|
|
7
|
+
async *findInBatches(options, batchSize) {
|
|
8
|
+
if (this.metadata.primaryColumns.length !== 1) {
|
|
9
|
+
throw new Error(`Entity ${this.metadata.name} has a composite primary key and cannot be fetched in batches`);
|
|
10
|
+
}
|
|
11
|
+
const primaryKey = this.metadata.primaryColumns[0].propertyName;
|
|
12
|
+
let lastPrimaryKeyValue = undefined;
|
|
13
|
+
let entities = [];
|
|
14
|
+
do {
|
|
15
|
+
const where = lastPrimaryKeyValue !== undefined
|
|
16
|
+
? { ...options.where, [primaryKey]: MoreThan(lastPrimaryKeyValue) }
|
|
17
|
+
: options.where;
|
|
18
|
+
const order = options.order !== undefined && primaryKey in options.order
|
|
19
|
+
? options.order
|
|
20
|
+
: { ...options.order, [primaryKey]: 'ASC' };
|
|
21
|
+
entities = await this.find({
|
|
22
|
+
...options,
|
|
23
|
+
where,
|
|
24
|
+
order,
|
|
25
|
+
take: batchSize,
|
|
26
|
+
});
|
|
27
|
+
if (entities.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
yield entities;
|
|
30
|
+
lastPrimaryKeyValue = entities.at(-1)?.[primaryKey];
|
|
31
|
+
} while (lastPrimaryKeyValue !== undefined);
|
|
32
|
+
}
|
|
33
|
+
findByInBatches(where, batchSize) {
|
|
34
|
+
return this.findInBatches({ where }, batchSize);
|
|
35
|
+
}
|
|
7
36
|
}
|
|
8
37
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../lib/extensions/repository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../lib/extensions/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoH,QAAQ,EAAiB,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/K,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,OAAO,iBAA2C,SAAQ,UAAc;IAC5E,YAAa,MAAuB,EAAE,OAAsB;QAC1D,KAAK,CAAC,MAAM,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAClB,OAA0B,EAC1B,SAAiB;QAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,+DAA+D,CAAC,CAAA;QAC9G,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;QAE/D,IAAI,mBAAmB,GAAoB,SAAS,CAAA;QACpD,IAAI,QAAQ,GAAQ,EAAE,CAAA;QAEtB,GAAG,CAAC;YACF,MAAM,KAAK,GAAG,mBAAmB,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;gBACnE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;YACjB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK;gBACtE,CAAC,CAAC,OAAO,CAAC,KAAK;gBACf,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAyB,CAAA;YAEpE,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBACzB,GAAG,OAAO;gBACV,KAAK;gBACL,KAAK;gBACL,IAAI,EAAE,SAAS;aAChB,CAAC,CAAA;YAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAEjC,MAAM,QAAQ,CAAA;YAEd,mBAAmB,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QACrD,CAAC,QAAQ,mBAAmB,KAAK,SAAS,EAAC;IAC7C,CAAC;IAED,eAAe,CACb,KAAkD,EAClD,SAAiB;QAEjB,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAA;IACjD,CAAC;CACF"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
2
2
|
const transactionStorage = new AsyncLocalStorage();
|
|
3
3
|
export async function transaction(dataSource, runInTransaction) {
|
|
4
|
-
const transactionManager = transactionStorage.getStore();
|
|
5
|
-
if (transactionManager != null) {
|
|
6
|
-
return await transactionManager.transaction(runInTransaction);
|
|
7
|
-
}
|
|
8
4
|
return await dataSource.transaction(async (manager) => {
|
|
9
5
|
return await transactionStorage.run(manager, async () => {
|
|
10
6
|
return await runInTransaction(manager);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../lib/extensions/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAwB,CAAA;AAExE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAsB,EACtB,gBAA8D;IAE9D,
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../lib/extensions/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAwB,CAAA;AAExE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAsB,EACtB,gBAA8D;IAE9D,OAAO,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACpD,OAAO,MAAM,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACtD,OAAO,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAE,OAAsB;IACnE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAE,MAAM,EAAE,IAAI;YACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;YAE7C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAC,IAAI,CAAY,CAAA;YACjC,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,IAAI,CAAY,CAAA;YAChC,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { InjectRepository, InjectEntityManager, InjectDataSource, } from '@nestj
|
|
|
2
2
|
export * from './extensions/index.js';
|
|
3
3
|
export * from './columns/index.js';
|
|
4
4
|
export * from './operators/index.js';
|
|
5
|
+
export * from './types/index.js';
|
|
5
6
|
export * from './naming/index.js';
|
|
6
7
|
export * from './helpers/index.js';
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export { InjectRepository, InjectEntityManager, InjectDataSource, } from '@nestj
|
|
|
2
2
|
export * from './extensions/index.js';
|
|
3
3
|
export * from './columns/index.js';
|
|
4
4
|
export * from './operators/index.js';
|
|
5
|
+
export * from './types/index.js';
|
|
5
6
|
export * from './naming/index.js';
|
|
6
7
|
export * from './helpers/index.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { isLatLong, isObject } from 'class-validator';
|
|
2
|
+
export class Coordinates {
|
|
3
|
+
latitude;
|
|
4
|
+
longitude;
|
|
5
|
+
constructor(pointOrLatitude, longitude) {
|
|
6
|
+
let latitude;
|
|
7
|
+
if (isObject(pointOrLatitude)) {
|
|
8
|
+
latitude = pointOrLatitude.coordinates[1];
|
|
9
|
+
longitude = pointOrLatitude.coordinates[0];
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
latitude = pointOrLatitude;
|
|
13
|
+
longitude = longitude;
|
|
14
|
+
}
|
|
15
|
+
if (!isLatLong(`${latitude},${longitude}`)) {
|
|
16
|
+
throw new Error(`${latitude},${longitude} are not valid coordinates`);
|
|
17
|
+
}
|
|
18
|
+
this.latitude = latitude;
|
|
19
|
+
this.longitude = longitude;
|
|
20
|
+
}
|
|
21
|
+
toPoint() {
|
|
22
|
+
return {
|
|
23
|
+
type: 'Point',
|
|
24
|
+
coordinates: [this.longitude, this.latitude]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=coordinates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinates.js","sourceRoot":"","sources":["../../lib/types/coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAGrD,MAAM,OAAO,WAAW;IACN,QAAQ,CAAQ;IAChB,SAAS,CAAQ;IAIjC,YAAa,eAA+B,EAAE,SAAkB;QAC9D,IAAI,QAAgB,CAAA;QACpB,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC9B,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YACzC,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAC5C,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,eAAe,CAAA;YAC1B,SAAS,GAAG,SAAmB,CAAA;QACjC,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,IAAI,SAAS,4BAA4B,CAAC,CAAA;QACvE,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,OAAO;QACL,OAAO;YACL,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;SAC7C,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './coordinates.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|