@spytecgps/nova-orm 1.0.115 → 1.0.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/entities/beaconBleMesh.d.ts +11 -0
  2. package/dist/entities/beaconBleMesh.js +63 -0
  3. package/dist/entities/beaconBleMesh.js.map +1 -0
  4. package/dist/entities/bleMesh.d.ts +15 -0
  5. package/dist/entities/bleMesh.js +74 -0
  6. package/dist/entities/bleMesh.js.map +1 -0
  7. package/dist/entities/deviceBleMesh.d.ts +14 -0
  8. package/dist/entities/deviceBleMesh.js +77 -0
  9. package/dist/entities/deviceBleMesh.js.map +1 -0
  10. package/dist/entities/index.d.ts +4 -1
  11. package/dist/entities/index.js +4 -1
  12. package/dist/entities/index.js.map +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/repositories/bleMesh/addBeaconsToBLEMesh.d.ts +5 -0
  15. package/dist/repositories/bleMesh/addBeaconsToBLEMesh.js +22 -0
  16. package/dist/repositories/bleMesh/addBeaconsToBLEMesh.js.map +1 -0
  17. package/dist/repositories/bleMesh/addDevicesToBLEMesh.d.ts +5 -0
  18. package/dist/repositories/bleMesh/addDevicesToBLEMesh.js +37 -0
  19. package/dist/repositories/bleMesh/addDevicesToBLEMesh.js.map +1 -0
  20. package/dist/repositories/bleMesh/createBLEMesh.d.ts +5 -0
  21. package/dist/repositories/bleMesh/createBLEMesh.js +19 -0
  22. package/dist/repositories/bleMesh/createBLEMesh.js.map +1 -0
  23. package/dist/repositories/bleMesh/getBLEMeshes.d.ts +4 -0
  24. package/dist/repositories/bleMesh/getBLEMeshes.js +46 -0
  25. package/dist/repositories/bleMesh/getBLEMeshes.js.map +1 -0
  26. package/dist/repositories/bleMesh/index.d.ts +87 -0
  27. package/dist/repositories/bleMesh/index.js +143 -0
  28. package/dist/repositories/bleMesh/index.js.map +1 -0
  29. package/dist/repositories/bleMesh/removeBeaconsFromBLEMesh.d.ts +4 -0
  30. package/dist/repositories/bleMesh/removeBeaconsFromBLEMesh.js +24 -0
  31. package/dist/repositories/bleMesh/removeBeaconsFromBLEMesh.js.map +1 -0
  32. package/dist/repositories/bleMesh/removeDevicesFromBLEMesh.d.ts +4 -0
  33. package/dist/repositories/bleMesh/removeDevicesFromBLEMesh.js +25 -0
  34. package/dist/repositories/bleMesh/removeDevicesFromBLEMesh.js.map +1 -0
  35. package/dist/repositories/bleMesh/updateBLEMesh.d.ts +4 -0
  36. package/dist/repositories/bleMesh/updateBLEMesh.js +32 -0
  37. package/dist/repositories/bleMesh/updateBLEMesh.js.map +1 -0
  38. package/dist/repositories/bleMesh/updateDevicesBLEMesh.d.ts +4 -0
  39. package/dist/repositories/bleMesh/updateDevicesBLEMesh.js +30 -0
  40. package/dist/repositories/bleMesh/updateDevicesBLEMesh.js.map +1 -0
  41. package/dist/repositories/bleMeshConfiguration/index.d.ts +3 -0
  42. package/dist/repositories/bleMeshConfiguration/index.js +3 -0
  43. package/dist/repositories/bleMeshConfiguration/index.js.map +1 -1
  44. package/dist/repositories/index.d.ts +2 -1
  45. package/dist/repositories/index.js +2 -1
  46. package/dist/repositories/index.js.map +1 -1
  47. package/dist/types/bleMesh.d.ts +70 -0
  48. package/dist/types/bleMesh.js +2 -0
  49. package/dist/types/bleMesh.js.map +1 -0
  50. package/dist/types/enums.d.ts +5 -0
  51. package/dist/types/enums.js +6 -0
  52. package/dist/types/enums.js.map +1 -1
  53. package/dist/types/index.d.ts +2 -1
  54. package/dist/types/index.js +2 -1
  55. package/dist/types/index.js.map +1 -1
  56. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ import { BeaconBleMesh } from '../../entities';
2
+ import { NovaDataSource } from '../../novaDataSource';
3
+ import { AddBeaconsToBLEMeshParams } from '../../types/bleMesh';
4
+ import { Logger } from '../../types/logger';
5
+ export declare const addBeaconsToBLEMesh: (novaDataSource: NovaDataSource, params: AddBeaconsToBLEMeshParams, logger: Logger) => Promise<BeaconBleMesh[]>;
@@ -0,0 +1,22 @@
1
+ import { BeaconBleMesh } from '../../entities';
2
+ export const addBeaconsToBLEMesh = async (novaDataSource, params, logger) => {
3
+ if (!params?.beacons?.length ||
4
+ params?.beacons?.some(b => !b.bleMac) ||
5
+ !params?.bleMeshId ||
6
+ !params.clientId) {
7
+ logger.warn({ params }, 'BLEMeshRepository::addBeaconsToBLEMesh missing required parameters');
8
+ return null;
9
+ }
10
+ return novaDataSource.safeQuery(async (dataSource) => {
11
+ const beaconBleMeshRepository = dataSource.getRepository(BeaconBleMesh);
12
+ const now = new Date();
13
+ const result = await beaconBleMeshRepository.save(params.beacons.map(b => ({
14
+ ...b,
15
+ createdAt: now,
16
+ clientId: params.clientId,
17
+ bleMeshId: params.bleMeshId,
18
+ })));
19
+ return result;
20
+ }, 'BLEMeshRepository::addBeaconsToBLEMesh');
21
+ };
22
+ //# sourceMappingURL=addBeaconsToBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addBeaconsToBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/addBeaconsToBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAK9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,cAA8B,EAC9B,MAAiC,EACjC,MAAc,EACY,EAAE;IAC5B,IACE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM;QACxB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACrC,CAAC,MAAM,EAAE,SAAS;QAClB,CAAC,MAAM,CAAC,QAAQ,EAChB;QACA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,oEAAoE,CAAC,CAAA;QAC7F,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAA4B,EAAE;QAC7F,MAAM,uBAAuB,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAEvE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAEtB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,GAAG,CAAC;YACJ,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC,CACJ,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,wCAAwC,CAAC,CAAA;AAC9C,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { DeviceBleMesh } from '../../entities';
2
+ import { NovaDataSource } from '../../novaDataSource';
3
+ import { AddDevicesToBLEMeshParams } from '../../types/bleMesh';
4
+ import { Logger } from '../../types/logger';
5
+ export declare const addDevicesToBLEMesh: (novaDataSource: NovaDataSource, params: AddDevicesToBLEMeshParams, logger: Logger) => Promise<DeviceBleMesh[]>;
@@ -0,0 +1,37 @@
1
+ import { In } from 'typeorm';
2
+ import { Device, DeviceBleMesh } from '../../entities';
3
+ export const addDevicesToBLEMesh = async (novaDataSource, params, logger) => {
4
+ if (!params?.imeis?.length || !params.clientId || !params.bleMeshId) {
5
+ logger.warn({ params }, 'BLEMeshRepository::addDevicesToBLEMesh missing required parameters');
6
+ return null;
7
+ }
8
+ return novaDataSource.safeQuery(async (dataSource) => {
9
+ const deviceBleMeshRepository = dataSource.getRepository(DeviceBleMesh);
10
+ const now = new Date();
11
+ const deviceRepo = dataSource.getRepository(Device);
12
+ const devices = await deviceRepo.find({
13
+ where: {
14
+ clientId: params.clientId,
15
+ imei: In(params.imeis),
16
+ },
17
+ });
18
+ const result = await deviceBleMeshRepository.save(params.imeis
19
+ .map(imei => {
20
+ const device = devices.find(dev => dev.imei === imei);
21
+ if (device == null) {
22
+ logger.warn({ imei }, 'BLEMeshRepository::addDevicesToBLEMesh - device not found');
23
+ return null;
24
+ }
25
+ return {
26
+ deviceId: device.id,
27
+ bleMeshId: params.bleMeshId,
28
+ clientId: params.clientId,
29
+ createdAt: now,
30
+ modifiedAt: now,
31
+ };
32
+ })
33
+ .filter(d => d != null));
34
+ return result;
35
+ }, 'BLEMeshRepository::addDevicesToBLEMesh');
36
+ };
37
+ //# sourceMappingURL=addDevicesToBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addDevicesToBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/addDevicesToBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAKtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,cAA8B,EAC9B,MAAiC,EACjC,MAAc,EACY,EAAE;IAC5B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACnE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,oEAAoE,CAAC,CAAA;QAC7F,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAA4B,EAAE;QAC7F,MAAM,uBAAuB,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAEvE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAEtB,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;YACpC,KAAK,EAAE;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;aACvB;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAC/C,MAAM,CAAC,KAAK;aACT,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YACrD,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,2DAA2D,CAAC,CAAA;gBAClF,OAAO,IAAI,CAAA;aACZ;YACD,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,GAAG;aAChB,CAAA;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAC1B,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,wCAAwC,CAAC,CAAA;AAC9C,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { BLEMesh } from '../../entities';
2
+ import { NovaDataSource } from '../../novaDataSource';
3
+ import { CreateBLEMeshParams } from '../../types/bleMesh';
4
+ import { Logger } from '../../types/logger';
5
+ export declare const createBLEMesh: (novaDataSource: NovaDataSource, params: CreateBLEMeshParams, logger: Logger) => Promise<BLEMesh>;
@@ -0,0 +1,19 @@
1
+ import { BLEMesh } from '../../entities';
2
+ export const createBLEMesh = async (novaDataSource, params, logger) => {
3
+ if (!params?.name || !params?.lat || !params?.lon || !params.clientId || !params.address) {
4
+ logger.warn({ params }, 'BLEMeshRepository::createBLEMesh missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const bleMeshRepository = dataSource.getRepository(BLEMesh);
9
+ const now = new Date();
10
+ const newBleMesh = {
11
+ ...params,
12
+ createdAt: now,
13
+ modifiedAt: now,
14
+ };
15
+ const result = await bleMeshRepository.save(newBleMesh);
16
+ return result;
17
+ }, 'BLEMeshRepository::createBLEMesh');
18
+ };
19
+ //# sourceMappingURL=createBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/createBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAKxC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,MAA2B,EAC3B,MAAc,EACI,EAAE;IACpB,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACxF,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAEtB,MAAM,UAAU,GAAG;YACjB,GAAG,MAAM;YACT,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;SAChB,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAEvD,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,kCAAkC,CAAC,CAAA;AACxC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { GetBLEMeshesParams, GetBLEMeshesResult } from '../../types/bleMesh';
3
+ import { Logger } from '../../types/logger';
4
+ export declare const getBLEMeshes: (novaDataSource: NovaDataSource, params: GetBLEMeshesParams, logger: Logger) => Promise<GetBLEMeshesResult>;
@@ -0,0 +1,46 @@
1
+ import { BLEMesh } from '../../entities';
2
+ export const getBLEMeshes = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.clientId && !params?.filters?.bleMeshIds?.length) {
4
+ logger.warn({ params }, 'BLEMeshRepository::getBLEMesh missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource, queryRunner) => {
8
+ const bleMeshRepository = dataSource.getRepository(BLEMesh);
9
+ let queryBuilder = bleMeshRepository.createQueryBuilder('bleMesh');
10
+ if (queryRunner) {
11
+ queryBuilder.setQueryRunner(queryRunner);
12
+ }
13
+ if (params.filters.clientId) {
14
+ queryBuilder = queryBuilder.andWhere('bleMesh.clientId = :clientId', {
15
+ clientId: params.filters.clientId,
16
+ });
17
+ }
18
+ if (params.filters.bleMeshIds?.length) {
19
+ queryBuilder = queryBuilder.andWhere('bleMesh.id IN (:...bleMeshIds)', {
20
+ bleMeshIds: params.filters.bleMeshIds,
21
+ });
22
+ }
23
+ if (params?.projectionOptions?.withBeacons) {
24
+ queryBuilder = queryBuilder.leftJoinAndSelect('bleMesh.beacons', 'beacon');
25
+ }
26
+ if (params?.projectionOptions?.withDevices) {
27
+ queryBuilder = queryBuilder
28
+ .leftJoinAndSelect('bleMesh.devices', 'deviceMesh')
29
+ .leftJoinAndSelect('deviceMesh.device', 'deviceInMesh');
30
+ }
31
+ const pageSize = params.pagingOptions?.pageSize ?? 100;
32
+ const pageIndex = params.pagingOptions?.pageIndex ?? 0;
33
+ queryBuilder = queryBuilder.limit(pageSize).offset(pageSize * pageIndex);
34
+ let bleMeshes;
35
+ let count = undefined;
36
+ if (params?.projectionOptions?.withTotalCount) {
37
+ ;
38
+ [bleMeshes, count] = await queryBuilder.getManyAndCount();
39
+ }
40
+ else {
41
+ bleMeshes = await queryBuilder.getMany();
42
+ }
43
+ return { bleMeshes, totalCount: count };
44
+ }, 'BLEMeshRepository::getBLEMesh');
45
+ };
46
+ //# sourceMappingURL=getBLEMeshes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBLEMeshes.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/getBLEMeshes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAKxC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,cAA8B,EAC9B,MAA0B,EAC1B,MAAc,EACe,EAAE;IAC/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;QACtE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,2DAA2D,CAAC,CAAA;QACpF,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EAAE,UAA0B,EAAE,WAAyB,EAA+B,EAAE;QAC3F,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAI,YAAY,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAElE,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC3B,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,8BAA8B,EAAE;gBACnE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;aAClC,CAAC,CAAA;SACH;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;YACrC,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,gCAAgC,EAAE;gBACrE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;aACtC,CAAC,CAAA;SACH;QAED,IAAI,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE;YAC1C,YAAY,GAAG,YAAY,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;SAC3E;QAED,IAAI,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE;YAC1C,YAAY,GAAG,YAAY;iBACxB,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,CAAC;iBAClD,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;SAC1D;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ,IAAI,GAAG,CAAA;QACtD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAA;QAEtD,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;QAExE,IAAI,SAAoB,CAAA;QACxB,IAAI,KAAK,GAAW,SAAS,CAAA;QAC7B,IAAI,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE;YAC7C,CAAC;YAAA,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;SAC3D;aAAM;YACL,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;SACzC;QAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IACzC,CAAC,EACD,+BAA+B,CAChC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { BeaconBleMesh, BLEMesh, DeviceBleMesh } from '../../entities';
2
+ import { AddBeaconsToBLEMeshParams, AddDevicesToBLEMeshParams, CreateBLEMeshParams, GetBLEMeshesParams, GetBLEMeshesResult, RemoveBeaconsFromBLEMeshParams, RemoveDevicesFromBLEMeshParams, UpdateBLEMeshParams, UpdateDevicesBLEMeshParams } from '../../types/bleMesh';
3
+ import { BaseRepository } from '../baseRepository';
4
+ export declare class BLEMeshRepository extends BaseRepository {
5
+ /**
6
+ * Create a BLE Mesh
7
+ * @param params params containing information to create BLE Mesh
8
+ * params.name: the name of the BLE Mesh, required
9
+ * params.clientId: the client ID, required
10
+ * params.address: the address, required
11
+ * params.lon: the longitude, required
12
+ * params.lat: the latitude, required
13
+ * params.bleMeshGroupId: the BLE Mesh Group ID, optional
14
+ * @returns Promise<BLEMesh> the created BLE Mesh
15
+ **/
16
+ createBLEMesh(params: CreateBLEMeshParams): Promise<BLEMesh>;
17
+ /**
18
+ * Get BLE Meshes
19
+ * @param params params containing information to get BLE Mesh with filters
20
+ * At least one of the following filters is required:
21
+ * params.filters.clientId: the client ID, optional
22
+ * params.filters.bleMeshGroupIds: the BLE Mesh Group IDs, optional
23
+ * params.filters.bleMeshIds: the BLE Mesh IDs, optional
24
+ * params.projectionOptions.withMeshGroups: whether to include Mesh Groups, optional
25
+ * params.projectionOptions.withBeacons: whether to include Beacons, optional
26
+ * params.projectionOptions.withDevices: whether to include Devices, optional
27
+ * @returns Promise<GetBLEMeshesResult> the BLE Meshes result
28
+ **/
29
+ getBLEMeshes(params: GetBLEMeshesParams): Promise<GetBLEMeshesResult>;
30
+ /**
31
+ * Add BLE beacons to a BLE Mesh
32
+ * @param params params containing information to add BLE beacons to a BLE Mesh
33
+ * params.clientId: the client ID, required
34
+ * params.bleMeshId: the BLE Mesh ID, required
35
+ * params.beacons: the Beacons to add, required
36
+ * @returns Promise<BeaconBleMesh[]> the created Beacon BLE Mesh
37
+ **/
38
+ addBeaconsToBLEMesh(params: AddBeaconsToBLEMeshParams): Promise<BeaconBleMesh[]>;
39
+ /**
40
+ * Add BLE devices to a BLE Mesh
41
+ * @param params params containing information to add BLE devices to a BLE Mesh
42
+ * params.clientId: the client ID, required
43
+ * params.devices: the Devices to add, required
44
+ * @returns Promise<DeviceBleMesh[]> the created Device BLE Mesh
45
+ **/
46
+ addDevicesToBLEMesh(params: AddDevicesToBLEMeshParams): Promise<DeviceBleMesh[]>;
47
+ /**
48
+ * Remove BLE beacons from a BLE Mesh
49
+ * @param params params containing information to remove BLE beacons from a BLE Mesh
50
+ * params.clientId: the client ID, required
51
+ * params.bleMeshId: the BLE Mesh ID, required
52
+ * params.beaconIds: the Beacons to remove, required
53
+ * @returns Promise<boolean> true if the beacons were removed
54
+ **/
55
+ removeBeaconsFromBLEMesh(params: RemoveBeaconsFromBLEMeshParams): Promise<boolean>;
56
+ /**
57
+ * Remove BLE devices from a BLE Mesh
58
+ * @param params params containing information to remove BLE devices from a BLE Mesh
59
+ * params.clientId: the client ID, required
60
+ * params.deviceIds: the Devices to remove, required
61
+ * params.bleMeshId: the BLE Mesh ID, optional if bleMeshGroupId is provided
62
+ * params.bleMeshGroupId: the BLE Mesh Group ID, optional if bleMeshId is provided
63
+ * @returns Promise<boolean> true if the devices were removed
64
+ **/
65
+ removeDevicesFromBLEMesh(params: RemoveDevicesFromBLEMeshParams): Promise<boolean>;
66
+ /**
67
+ * Update a BLE Mesh
68
+ * @param params params containing information to update BLE Mesh
69
+ * params.filters.id: the BLE Mesh ID, required
70
+ * params.values.name: the name of the BLE Mesh, optional
71
+ * params.values.address: the address, optional
72
+ * params.values.lon: the longitude, optional
73
+ * params.values.lat: the latitude, optional
74
+ * params.values.bleMeshGroupId: the BLE Mesh Group ID, optional
75
+ * @returns Promise<boolean> true if the BLE Mesh was updated
76
+ **/
77
+ updateBLEMesh(params: UpdateBLEMeshParams): Promise<boolean>;
78
+ /**
79
+ * Update BLE devices from a BLE Mesh
80
+ * @param params params containing information to update BLE devices from a BLE Mesh
81
+ * params.filters.clientId: the client ID, required
82
+ * params.filters.imeis: the Devices IMEIs, required
83
+ * params.values.status: the status to update, required
84
+ * @returns Promise<boolean> true if the devices were updated
85
+ * */
86
+ updateDevicesBLEMesh(params: UpdateDevicesBLEMeshParams): Promise<boolean>;
87
+ }
@@ -0,0 +1,143 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { BaseRepository } from '../baseRepository';
3
+ import { addBeaconsToBLEMesh } from './addBeaconsToBLEMesh';
4
+ import { addDevicesToBLEMesh } from './addDevicesToBLEMesh';
5
+ import { createBLEMesh } from './createBLEMesh';
6
+ import { getBLEMeshes } from './getBLEMeshes';
7
+ import { removeBeaconsFromBLEMesh } from './removeBeaconsFromBLEMesh';
8
+ import { removeDevicesFromBLEMesh } from './removeDevicesFromBLEMesh';
9
+ import { updateBLEMesh } from './updateBLEMesh';
10
+ import { updateDevicesBLEMesh } from './updateDevicesBLEMesh';
11
+ export class BLEMeshRepository extends BaseRepository {
12
+ /**
13
+ * Create a BLE Mesh
14
+ * @param params params containing information to create BLE Mesh
15
+ * params.name: the name of the BLE Mesh, required
16
+ * params.clientId: the client ID, required
17
+ * params.address: the address, required
18
+ * params.lon: the longitude, required
19
+ * params.lat: the latitude, required
20
+ * params.bleMeshGroupId: the BLE Mesh Group ID, optional
21
+ * @returns Promise<BLEMesh> the created BLE Mesh
22
+ **/
23
+ async createBLEMesh(params) {
24
+ this.logger.trace(params, 'BLEMeshRepository::createBLEMesh started with params');
25
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
26
+ const result = await createBLEMesh(novaDataSource, params, this.logger);
27
+ this.logger.trace(result, 'BLEMeshRepository::createBLEMesh result');
28
+ return result;
29
+ }
30
+ /**
31
+ * Get BLE Meshes
32
+ * @param params params containing information to get BLE Mesh with filters
33
+ * At least one of the following filters is required:
34
+ * params.filters.clientId: the client ID, optional
35
+ * params.filters.bleMeshGroupIds: the BLE Mesh Group IDs, optional
36
+ * params.filters.bleMeshIds: the BLE Mesh IDs, optional
37
+ * params.projectionOptions.withMeshGroups: whether to include Mesh Groups, optional
38
+ * params.projectionOptions.withBeacons: whether to include Beacons, optional
39
+ * params.projectionOptions.withDevices: whether to include Devices, optional
40
+ * @returns Promise<GetBLEMeshesResult> the BLE Meshes result
41
+ **/
42
+ async getBLEMeshes(params) {
43
+ this.logger.trace(params, 'BLEMeshRepository::getBLEMesh started with params');
44
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
45
+ const result = await getBLEMeshes(novaDataSource, params, this.logger);
46
+ this.logger.trace(result, 'BLEMeshRepository::getBLEMesh result');
47
+ return result;
48
+ }
49
+ /**
50
+ * Add BLE beacons to a BLE Mesh
51
+ * @param params params containing information to add BLE beacons to a BLE Mesh
52
+ * params.clientId: the client ID, required
53
+ * params.bleMeshId: the BLE Mesh ID, required
54
+ * params.beacons: the Beacons to add, required
55
+ * @returns Promise<BeaconBleMesh[]> the created Beacon BLE Mesh
56
+ **/
57
+ async addBeaconsToBLEMesh(params) {
58
+ this.logger.trace(params, 'BLEMeshRepository::addBeaconsToBLEMesh started with params');
59
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
60
+ const result = await addBeaconsToBLEMesh(novaDataSource, params, this.logger);
61
+ this.logger.trace(result, 'BLEMeshRepository::addBeaconsToBLEMesh result');
62
+ return result;
63
+ }
64
+ /**
65
+ * Add BLE devices to a BLE Mesh
66
+ * @param params params containing information to add BLE devices to a BLE Mesh
67
+ * params.clientId: the client ID, required
68
+ * params.devices: the Devices to add, required
69
+ * @returns Promise<DeviceBleMesh[]> the created Device BLE Mesh
70
+ **/
71
+ async addDevicesToBLEMesh(params) {
72
+ this.logger.trace(params, 'BLEMeshRepository::addDevicesToBLEMesh started with params');
73
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
74
+ const result = await addDevicesToBLEMesh(novaDataSource, params, this.logger);
75
+ this.logger.trace(result, 'BLEMeshRepository::addDevicesToBLEMesh result');
76
+ return result;
77
+ }
78
+ /**
79
+ * Remove BLE beacons from a BLE Mesh
80
+ * @param params params containing information to remove BLE beacons from a BLE Mesh
81
+ * params.clientId: the client ID, required
82
+ * params.bleMeshId: the BLE Mesh ID, required
83
+ * params.beaconIds: the Beacons to remove, required
84
+ * @returns Promise<boolean> true if the beacons were removed
85
+ **/
86
+ async removeBeaconsFromBLEMesh(params) {
87
+ this.logger.trace(params, 'BLEMeshRepository::removeBeaconsFromBLEMesh started with params');
88
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
89
+ const result = await removeBeaconsFromBLEMesh(novaDataSource, params, this.logger);
90
+ this.logger.trace({ result }, 'BLEMeshRepository::removeBeaconsFromBLEMesh result');
91
+ return result;
92
+ }
93
+ /**
94
+ * Remove BLE devices from a BLE Mesh
95
+ * @param params params containing information to remove BLE devices from a BLE Mesh
96
+ * params.clientId: the client ID, required
97
+ * params.deviceIds: the Devices to remove, required
98
+ * params.bleMeshId: the BLE Mesh ID, optional if bleMeshGroupId is provided
99
+ * params.bleMeshGroupId: the BLE Mesh Group ID, optional if bleMeshId is provided
100
+ * @returns Promise<boolean> true if the devices were removed
101
+ **/
102
+ async removeDevicesFromBLEMesh(params) {
103
+ this.logger.trace(params, 'BLEMeshRepository::removeDevicesFromBLEMesh started with params');
104
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
105
+ const result = await removeDevicesFromBLEMesh(novaDataSource, params, this.logger);
106
+ this.logger.trace({ result }, 'BLEMeshRepository::removeDevicesFromBLEMesh result');
107
+ return result;
108
+ }
109
+ /**
110
+ * Update a BLE Mesh
111
+ * @param params params containing information to update BLE Mesh
112
+ * params.filters.id: the BLE Mesh ID, required
113
+ * params.values.name: the name of the BLE Mesh, optional
114
+ * params.values.address: the address, optional
115
+ * params.values.lon: the longitude, optional
116
+ * params.values.lat: the latitude, optional
117
+ * params.values.bleMeshGroupId: the BLE Mesh Group ID, optional
118
+ * @returns Promise<boolean> true if the BLE Mesh was updated
119
+ **/
120
+ async updateBLEMesh(params) {
121
+ this.logger.trace(params, 'BLEMeshRepository::updateBLEMesh started with params');
122
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
123
+ const result = await updateBLEMesh(novaDataSource, params, this.logger);
124
+ this.logger.trace({ result }, 'BLEMeshRepository::updateBLEMesh result');
125
+ return result;
126
+ }
127
+ /**
128
+ * Update BLE devices from a BLE Mesh
129
+ * @param params params containing information to update BLE devices from a BLE Mesh
130
+ * params.filters.clientId: the client ID, required
131
+ * params.filters.imeis: the Devices IMEIs, required
132
+ * params.values.status: the status to update, required
133
+ * @returns Promise<boolean> true if the devices were updated
134
+ * */
135
+ async updateDevicesBLEMesh(params) {
136
+ this.logger.trace(params, 'BLEMeshRepository::updateDevicesBLEMesh started with params');
137
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
138
+ const result = await updateDevicesBLEMesh(novaDataSource, params, this.logger);
139
+ this.logger.trace({ result }, 'BLEMeshRepository::updateDevicesBLEMesh result');
140
+ return result;
141
+ }
142
+ }
143
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { RemoveBeaconsFromBLEMeshParams } from '../../types/bleMesh';
3
+ import { Logger } from '../../types/logger';
4
+ export declare const removeBeaconsFromBLEMesh: (novaDataSource: NovaDataSource, params: RemoveBeaconsFromBLEMeshParams, logger: Logger) => Promise<boolean>;
@@ -0,0 +1,24 @@
1
+ import { BeaconBleMesh } from '../../entities';
2
+ export const removeBeaconsFromBLEMesh = async (novaDataSource, params, logger) => {
3
+ if (!params?.beaconIds?.length || !params?.bleMeshId || !params.clientId) {
4
+ logger.warn({ params }, 'BLEMeshRepository::removeBeaconsFromBLEMesh missing required parameters');
5
+ return false;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const beaconBleMeshRepository = dataSource.getRepository(BeaconBleMesh);
9
+ let queryBuilder = beaconBleMeshRepository.createQueryBuilder().delete();
10
+ queryBuilder = queryBuilder
11
+ .where('bleMeshId = :bleMeshId', {
12
+ bleMeshId: params.bleMeshId,
13
+ })
14
+ .andWhere('clientId = :clientId', {
15
+ clientId: params.clientId,
16
+ })
17
+ .andWhere('id IN (:...beaconIds)', {
18
+ beaconIds: params.beaconIds,
19
+ });
20
+ const result = await queryBuilder.execute();
21
+ return result.affected > 0;
22
+ }, 'BLEMeshRepository::removeBeaconsFromBLEMesh');
23
+ };
24
+ //# sourceMappingURL=removeBeaconsFromBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeBeaconsFromBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/removeBeaconsFromBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAK9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,cAA8B,EAC9B,MAAsC,EACtC,MAAc,EACI,EAAE;IACpB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACxE,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,yEAAyE,CAC1E,CAAA;QACD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,uBAAuB,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAEvE,IAAI,YAAY,GAAG,uBAAuB,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAA;QAExE,YAAY,GAAG,YAAY;aACxB,KAAK,CAAC,wBAAwB,EAAE;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;aACD,QAAQ,CAAC,sBAAsB,EAAE;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;aACD,QAAQ,CAAC,uBAAuB,EAAE;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAA;QAEJ,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAE3C,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC5B,CAAC,EAAE,6CAA6C,CAAC,CAAA;AACnD,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { RemoveDevicesFromBLEMeshParams } from '../../types/bleMesh';
3
+ import { Logger } from '../../types/logger';
4
+ export declare const removeDevicesFromBLEMesh: (novaDataSource: NovaDataSource, params: RemoveDevicesFromBLEMeshParams, logger: Logger) => Promise<boolean>;
@@ -0,0 +1,25 @@
1
+ import { DeviceBleMesh } from '../../entities';
2
+ export const removeDevicesFromBLEMesh = async (novaDataSource, params, logger) => {
3
+ if (!params?.imeis?.length || !params?.bleMeshId || !params.clientId) {
4
+ logger.warn({ params }, 'BLEMeshRepository::removeDevicesFromBLEMesh missing required parameters');
5
+ return false;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const deviceBleMeshRepository = dataSource.getRepository(DeviceBleMesh);
9
+ let queryBuilder = deviceBleMeshRepository.createQueryBuilder().delete();
10
+ queryBuilder = queryBuilder
11
+ .andWhere('clientId = :clientId', {
12
+ clientId: params.clientId,
13
+ })
14
+ .where('deviceId IN (SELECT id FROM `device` WHERE imei IN(:imeis) and clientId = :clientId)', {
15
+ imeis: params.imeis,
16
+ clientId: params.clientId,
17
+ })
18
+ .andWhere('bleMeshId = :bleMeshId', {
19
+ bleMeshId: params.bleMeshId,
20
+ });
21
+ const result = await queryBuilder.execute();
22
+ return result.affected > 0;
23
+ }, 'BLEMeshRepository::removeDevicesFromBLEMesh');
24
+ };
25
+ //# sourceMappingURL=removeDevicesFromBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeDevicesFromBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/removeDevicesFromBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAK9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,cAA8B,EAC9B,MAAsC,EACtC,MAAc,EACI,EAAE;IACpB,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpE,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,yEAAyE,CAC1E,CAAA;QACD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,uBAAuB,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAEvE,IAAI,YAAY,GAAG,uBAAuB,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAA;QAExE,YAAY,GAAG,YAAY;aACxB,QAAQ,CAAC,sBAAsB,EAAE;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;aACD,KAAK,CACJ,sFAAsF,EACtF;YACE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CACF;aACA,QAAQ,CAAC,wBAAwB,EAAE;YAClC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAA;QAEJ,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAE3C,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC5B,CAAC,EAAE,6CAA6C,CAAC,CAAA;AACnD,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { UpdateBLEMeshParams } from '../../types/bleMesh';
3
+ import { Logger } from '../../types/logger';
4
+ export declare const updateBLEMesh: (novaDataSource: NovaDataSource, params: UpdateBLEMeshParams, logger: Logger) => Promise<boolean>;
@@ -0,0 +1,32 @@
1
+ import { BLEMesh } from '../../entities';
2
+ export const updateBLEMesh = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.id) {
4
+ logger.warn({ params }, 'BLEMeshRepository::updateBLEMesh missing required parameters');
5
+ return false;
6
+ }
7
+ if (!params?.values?.name &&
8
+ !params?.values?.lat &&
9
+ !params?.values?.lon &&
10
+ !params?.values?.address) {
11
+ logger.warn({ params }, 'BLEMeshRepository::updateBLEMesh missing required parameters');
12
+ return false;
13
+ }
14
+ return novaDataSource.safeQuery(async (dataSource) => {
15
+ const bleMeshRepository = dataSource.getRepository(BLEMesh);
16
+ const now = new Date();
17
+ const result = await bleMeshRepository
18
+ .createQueryBuilder()
19
+ .update(BLEMesh)
20
+ .set({
21
+ address: params.values.address,
22
+ lat: params.values.lat,
23
+ lon: params.values.lon,
24
+ name: params.values.name,
25
+ modifiedAt: now,
26
+ })
27
+ .where('id = :id', { id: params.filters.id })
28
+ .execute();
29
+ return result.affected > 0;
30
+ }, 'BLEMeshRepository::updateBLEMesh');
31
+ };
32
+ //# sourceMappingURL=updateBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/updateBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAKxC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,MAA2B,EAC3B,MAAc,EACI,EAAE;IACpB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACxB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;KACb;IAED,IACE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI;QACrB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;QACpB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;QACpB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EACxB;QACA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAEtB,MAAM,MAAM,GAAG,MAAM,iBAAiB;aACnC,kBAAkB,EAAE;aACpB,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC;YACH,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;YAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG;YACtB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG;YACtB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;YACxB,UAAU,EAAE,GAAG;SAChB,CAAC;aACD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;aAC5C,OAAO,EAAE,CAAA;QAEZ,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC5B,CAAC,EAAE,kCAAkC,CAAC,CAAA;AACxC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { UpdateDevicesBLEMeshParams } from '../../types/bleMesh';
3
+ import { Logger } from '../../types/logger';
4
+ export declare const updateDevicesBLEMesh: (novaDataSource: NovaDataSource, params: UpdateDevicesBLEMeshParams, logger: Logger) => Promise<boolean>;
@@ -0,0 +1,30 @@
1
+ import { DeviceBleMesh } from '../../entities';
2
+ export const updateDevicesBLEMesh = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.imeis?.length || !params.filters.clientId) {
4
+ logger.warn({ params }, 'BLEMeshRepository::updateBLEMesh missing required parameters');
5
+ return false;
6
+ }
7
+ if (!params?.values?.status) {
8
+ logger.warn({ params }, 'BLEMeshRepository::updateBLEMesh missing required parameters');
9
+ return false;
10
+ }
11
+ return novaDataSource.safeQuery(async (dataSource) => {
12
+ const bleMeshRepository = dataSource.getRepository(DeviceBleMesh);
13
+ const now = new Date();
14
+ const result = await bleMeshRepository
15
+ .createQueryBuilder()
16
+ .update(DeviceBleMesh)
17
+ .set({
18
+ status: params.values.status,
19
+ modifiedAt: now,
20
+ })
21
+ .where('deviceId IN (SELECT id FROM `device` WHERE imei IN(:imeis) and clientId = :clientId)', {
22
+ imeis: params.filters.imeis,
23
+ clientId: params.filters.clientId,
24
+ })
25
+ .andWhere('clientId = :clientId', { clientId: params.filters.clientId })
26
+ .execute();
27
+ return result.affected > 0;
28
+ }, 'BLEMeshRepository::updateBLEMesh');
29
+ };
30
+ //# sourceMappingURL=updateDevicesBLEMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateDevicesBLEMesh.js","sourceRoot":"","sources":["../../../src/repositories/bleMesh/updateDevicesBLEMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAK9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,cAA8B,EAC9B,MAAkC,EAClC,MAAc,EACI,EAAE;IACpB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC/D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;KACb;IAED,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAEjE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAEtB,MAAM,MAAM,GAAG,MAAM,iBAAiB;aACnC,kBAAkB,EAAE;aACpB,MAAM,CAAC,aAAa,CAAC;aACrB,GAAG,CAAC;YACH,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAC5B,UAAU,EAAE,GAAG;SAChB,CAAC;aACD,KAAK,CACJ,sFAAsF,EACtF;YACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;YAC3B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;SAClC,CACF;aACA,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;aACvE,OAAO,EAAE,CAAA;QAEZ,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC5B,CAAC,EAAE,kCAAkC,CAAC,CAAA;AACxC,CAAC,CAAA"}
@@ -1,6 +1,9 @@
1
1
  import { BLEMeshConfiguration } from '../../entities';
2
2
  import { CreateBLEMeshConfigurationParams, DeleteBLEMeshConfigurationParams, GetBLEMeshConfigurationParams, UpdateBLEMeshConfigurationParams } from '../../types/bleMeshConfiguration';
3
3
  import { BaseRepository } from '../baseRepository';
4
+ /**
5
+ * @deprecated Use BLEMeshRepository instead
6
+ */
4
7
  export declare class BLEMeshConfigurationRepository extends BaseRepository {
5
8
  /**
6
9
  * Get ble mesh configuration
@@ -4,6 +4,9 @@ import { createBLEMeshConfigurationParams } from './createBLEMeshConfigurationPa
4
4
  import { deleteBLEMeshConfiguration } from './deleteBLEMeshConfiguration';
5
5
  import { getBLEMeshConfiguration } from './getBLEMeshConfiguration';
6
6
  import { updateBLEMeshConfiguration } from './updateBLEMeshConfiguration';
7
+ /**
8
+ * @deprecated Use BLEMeshRepository instead
9
+ */
7
10
  export class BLEMeshConfigurationRepository extends BaseRepository {
8
11
  /**
9
12
  * Get ble mesh configuration
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/bleMeshConfiguration/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAOrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAEzE,MAAM,OAAO,8BAA+B,SAAQ,cAAc;IAChE;;;;;;;OAOG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAqC;QAErC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,6EAA6E,CAC9E,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,gEAAgE,CAAC,CAAA;QAE3F,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,0BAA0B,CAC9B,MAAwC;QAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,gFAAgF,CACjF,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,mEAAmE,CAAC,CAAA;QAE9F,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,0BAA0B,CAAC,MAAwC;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,gFAAgF,CACjF,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,MAAM,EAAE,EACV,mEAAmE,CACpE,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,0BAA0B,CAAC,MAAwC;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,gFAAgF,CACjF,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,MAAM,EAAE,EACV,mEAAmE,CACpE,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/bleMeshConfiguration/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAOrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAEzE;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,cAAc;IAChE;;;;;;;OAOG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAqC;QAErC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,6EAA6E,CAC9E,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,gEAAgE,CAAC,CAAA;QAE3F,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,0BAA0B,CAC9B,MAAwC;QAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,gFAAgF,CACjF,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,mEAAmE,CAAC,CAAA;QAE9F,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,0BAA0B,CAAC,MAAwC;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,gFAAgF,CACjF,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,MAAM,EAAE,EACV,mEAAmE,CACpE,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,0BAA0B,CAAC,MAAwC;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,gFAAgF,CACjF,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,MAAM,EAAE,EACV,mEAAmE,CACpE,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}