@spytecgps/nova-orm 1.0.21 → 1.0.22

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.
@@ -15,8 +15,47 @@ export const getTasks = async (novaDataSource, params, logger) => {
15
15
  else if (params.filters.title || params.filters.description) {
16
16
  queryBuilder = queryBuilder.innerJoin('task.taskSchedule', 'taskSchedule');
17
17
  }
18
+ if (params.projectionOptions?.includeDeviceStatus ||
19
+ params.filters?.dueInActiveHoursFilter?.minValue != null ||
20
+ params.filters?.dueInActiveHoursFilter?.maxValue != null ||
21
+ params.filters?.dueInOdometerFilter?.maxValue != null ||
22
+ params.filters?.dueInOdometerFilter?.minValue != null) {
23
+ queryBuilder = queryBuilder.leftJoinAndSelect('task.deviceStatus', 'deviceStatus', 'deviceStatus.imei = task.imei');
24
+ }
18
25
  queryBuilder = addFilters(queryBuilder, params.filters, tasksFilterMapping, 'task');
19
26
  queryBuilder = addFilters(queryBuilder, params.filters, tasksFilterMappingWithSchedule, 'taskSchedule');
27
+ if (params.filters?.dueInOdometerFilter?.maxValue != null) {
28
+ queryBuilder = queryBuilder.andWhere(`(JSON_EXTRACT(deviceStatus.data, '$.odoMileage') IS NOT NULL
29
+ AND task.dueOdometer IS NOT NULL
30
+ AND (task.dueOdometer > CAST(JSON_EXTRACT(deviceStatus.data, '$.odoMileage') AS DECIMAL(15,4))
31
+ AND task.dueOdometer - CAST(JSON_EXTRACT(deviceStatus.data, '$.odoMileage') AS DECIMAL(15,4)) <= :dueInMaxOdometer))`, {
32
+ dueInMaxOdometer: params.filters.dueInOdometerFilter.maxValue,
33
+ });
34
+ }
35
+ if (params.filters?.dueInOdometerFilter?.minValue != null) {
36
+ queryBuilder = queryBuilder.andWhere(`(JSON_EXTRACT(deviceStatus.data, '$.odoMileage') IS NOT NULL
37
+ AND task.dueOdometer IS NOT NULL
38
+ AND (task.dueOdometer > CAST(JSON_EXTRACT(deviceStatus.data, '$.odoMileage') AS DECIMAL(15,4))
39
+ AND task.dueOdometer - CAST(JSON_EXTRACT(deviceStatus.data, '$.odoMileage') AS DECIMAL(15,4)) >= :dueInMinOdometer))`, {
40
+ dueInMinOdometer: params.filters.dueInOdometerFilter.minValue,
41
+ });
42
+ }
43
+ if (params.filters?.dueInActiveHoursFilter?.maxValue != null) {
44
+ queryBuilder = queryBuilder.andWhere(`(JSON_EXTRACT(deviceStatus.data, '$.hoursOfOperation') IS NOT NULL
45
+ AND task.dueActiveHours IS NOT NULL
46
+ AND (task.dueActiveHours > CAST(JSON_EXTRACT(deviceStatus.data, '$.hoursOfOperation') AS DECIMAL(15,4))
47
+ AND task.dueActiveHours - CAST(JSON_EXTRACT(deviceStatus.data, '$.hoursOfOperation') AS DECIMAL(15,4)) <= :dueInMaxActiveHours))`, {
48
+ dueInMaxActiveHours: params.filters.dueInActiveHoursFilter.maxValue,
49
+ });
50
+ }
51
+ if (params.filters?.dueInActiveHoursFilter?.minValue != null) {
52
+ queryBuilder = queryBuilder.andWhere(`(JSON_EXTRACT(deviceStatus.data, '$.hoursOfOperation') IS NOT NULL
53
+ AND task.dueActiveHours IS NOT NULL
54
+ AND (task.dueActiveHours > CAST(JSON_EXTRACT(deviceStatus.data, '$.hoursOfOperation') AS DECIMAL(15,4))
55
+ AND task.dueActiveHours - CAST(JSON_EXTRACT(deviceStatus.data, '$.hoursOfOperation') AS DECIMAL(15,4)) >= :dueInMinActiveHours))`, {
56
+ dueInMinActiveHours: params.filters.dueInActiveHoursFilter.minValue,
57
+ });
58
+ }
20
59
  const sortField = params.sortOptions?.sortField ?? 'id';
21
60
  const sortOrder = params.sortOptions?.sortOrder ?? 'DESC';
22
61
  queryBuilder = queryBuilder.orderBy(`task.${sortField}`, sortOrder);
@@ -1 +1 @@
1
- {"version":3,"file":"getTasks.js","sourceRoot":"","sources":["../../../src/repositories/tasks/getTasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,gBAAgB,CAAA;AAInD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,8BAA8B,GAC/B,MAAM,yBAAyB,CAAA;AAEhC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,cAA8B,EAC9B,MAAsB,EACtB,MAAc,EACG,EAAE;IACnB,IAAI,CAAC,oBAAoB,CAAkB,MAAM,EAAE,OAAO,CAAC,EAAE;QAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,uDAAuD,CAAC,CAAA;QAChF,OAAO,EAAE,CAAA;KACV;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAmB,EAAE;QACpF,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAErD,IAAI,YAAY,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAE5D,IAAI,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE;YACjD,YAAY,GAAG,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;SACnF;aAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YAC7D,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;SAC3E;QAED,YAAY,GAAG,UAAU,CAAa,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAA;QAC/F,YAAY,GAAG,UAAU,CACvB,YAAY,EACZ,MAAM,CAAC,OAAO,EACd,8BAA8B,EAC9B,cAAc,CACf,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,SAAS,IAAI,IAAI,CAAA;QACvD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,SAAS,IAAI,MAAM,CAAA;QAEzD,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,SAAS,EAAE,EAAE,SAAS,CAAC,CAAA;QAEnE,MAAM,MAAM,GAAG,MAAM,YAAY;aAC9B,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,IAAI,GAAG,CAAC;aAC7C,MAAM,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;aAC1F,OAAO,EAAE,CAAA;QAEZ,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,2BAA2B,CAAC,CAAA;AACjC,CAAC,CAAA"}
1
+ {"version":3,"file":"getTasks.js","sourceRoot":"","sources":["../../../src/repositories/tasks/getTasks.ts"],"names":[],"mappings":"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"}
@@ -135,7 +135,9 @@ export interface GetTasksFilters {
135
135
  clientId?: number | null;
136
136
  dueDateFilter?: RangeFilter<Date> | null;
137
137
  dueOdometerFilter?: RangeFilter<number> | null;
138
+ dueInOdometerFilter?: RangeFilter<number> | null;
138
139
  dueActiveHoursFilter?: RangeFilter<number> | null;
140
+ dueInActiveHoursFilter?: RangeFilter<number> | null;
139
141
  startDateFilter?: RangeFilter<Date> | null;
140
142
  startingOdometerFilter?: RangeFilter<number> | null;
141
143
  startingActiveHoursFilter?: RangeFilter<number> | null;
@@ -160,6 +162,7 @@ export interface GetTasksParams {
160
162
  filters: GetTasksFilters;
161
163
  projectionOptions?: {
162
164
  includeTaskSchedule?: boolean;
165
+ includeDeviceStatus?: boolean;
163
166
  };
164
167
  pagingOptions?: {
165
168
  pageSize?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spytecgps/nova-orm",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "description": "ORM with PlanetScale",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",