@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.
@@ -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,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAwB,MAAM,SAAS,CAAA;AAItD,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
+ {"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,EAAwD,UAAU,EAAE,MAAM,SAAS,CAAA;AAC1F,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;CACF"}
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,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;IACxD,IAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAC/D,CAAC;IAED,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"}
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,8 @@
1
+ import { Point } from 'typeorm';
2
+ export declare class Coordinates {
3
+ readonly latitude: number;
4
+ readonly longitude: number;
5
+ constructor(point: Point);
6
+ constructor(latitude: number, longitude: number);
7
+ toPoint(): Point;
8
+ }
@@ -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,2 @@
1
+ export * from './coordinates.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wisemen/nestjs-typeorm",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",