@spytecgps/nova-orm 0.0.196 → 0.0.197

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.
@@ -0,0 +1,5 @@
1
+ import { Task } from '../../entities';
2
+ import { NovaDataSource } from '../../novaDataSource';
3
+ import { Logger } from '../../types/logger';
4
+ import { GetTasksParams } from '../../types/tasks';
5
+ export declare const getTasks: (novaDataSource: NovaDataSource, params: GetTasksParams, logger: Logger) => Promise<Task[]>;
@@ -1,5 +1,5 @@
1
1
  import { DeviceTask, Task, TaskSchedule } from '../../entities';
2
- import { AddTaskScheduleDevicesParams, CreateTaskParams, CreateTaskScheduleParams, DeleteTaskScheduleDevicesParams, DeleteTaskScheduleParams, GetDeviceTasksParams, GetTaskScheduleParams, GetTaskSchedulesParams, SetTaskScheduleDevicesParams, UpdateTaskScheduleParams } from '../../types/tasks';
2
+ import { AddTaskScheduleDevicesParams, CreateTaskParams, CreateTaskScheduleParams, DeleteTaskScheduleDevicesParams, DeleteTaskScheduleParams, GetDeviceTasksParams, GetTaskScheduleParams, GetTaskSchedulesParams, GetTasksParams, SetTaskScheduleDevicesParams, UpdateTaskScheduleParams } from '../../types/tasks';
3
3
  import { BaseRepository } from '../baseRepository';
4
4
  export declare class TasksRepository extends BaseRepository {
5
5
  /**
@@ -158,4 +158,35 @@ export declare class TasksRepository extends BaseRepository {
158
158
  * @returns Promise<Task> the created task
159
159
  */
160
160
  createTask(params: CreateTaskParams): Promise<Task>;
161
+ /**
162
+ * Get tasks with filters
163
+ * @param params params containing information to get tasks
164
+ * At least one of the following filters is required:
165
+ * params.filters.taskId: the task ID
166
+ * params.filters.taskScheduleId: the task schedule ID
167
+ * params.filters.imei: the IMEI
168
+ * params.filters.clientId: the client ID
169
+ * params.filters.dueDateFilter: the due date range filter
170
+ * params.filters.dueOdometerFilter: the due odometer range filter
171
+ * params.filters.dueActiveHoursFilter: the due active hours range filter
172
+ * params.filters.startDateFilter: the start date range filter
173
+ * params.filters.startingOdometerFilter: the starting odometer range filter
174
+ * params.filters.startingActiveHoursFilter: the starting active hours range filter
175
+ * params.filters.status: the status (pending, past_due, completed, deleted)
176
+ * params.filters.pastDueAtFilter: the past due at range filter
177
+ * params.filters.createdAtFilter: the created at range filter
178
+ * params.filters.completedAtFilter: the completed at range filter
179
+ * params.filters.completionNotes: the completion notes for partial match search
180
+ * params.filters.completionOdometerFilter: the completion odometer range filter
181
+ * params.filters.completionActiveHoursFilter: the completion active hours range filter
182
+ * params.filters.completedBy: the completed by, partial match search
183
+ * params.filters.modifiedBy: the modified by, partial match search
184
+ * params.filters.modifiedAtFilter: the modified at range filter
185
+ * params.filters.queuedAtFilter: the queued at range filter
186
+ * params.filters.predictedDueDateFilter: the predicted due date range filter
187
+ * params.filters.deletedAtFilter: the deleted at range filter
188
+ * params.filters.deletedBy: the deleted by, partial match search
189
+ * @returns Promise<Task[]> the tasks corresponding to the filters
190
+ */
191
+ getTasks(params: GetTasksParams): Promise<Task[]>;
161
192
  }
@@ -109,3 +109,32 @@ export interface CreateTaskParams {
109
109
  startingOdometer?: number;
110
110
  startingActiveHours?: number;
111
111
  }
112
+ export interface GetTasksFilters {
113
+ taskScheduleId?: number;
114
+ taskId?: number;
115
+ imei?: string;
116
+ clientId?: number;
117
+ dueDateFilter?: RangeFilter<Date>;
118
+ dueOdometerFilter?: RangeFilter<number>;
119
+ dueActiveHoursFilter?: RangeFilter<number>;
120
+ startDateFilter?: RangeFilter<Date>;
121
+ startingOdometerFilter?: RangeFilter<number>;
122
+ startingActiveHoursFilter?: RangeFilter<number>;
123
+ status?: 'pending' | 'past_due' | 'completed' | 'deleted';
124
+ pastDueAtFilter?: RangeFilter<Date>;
125
+ createdAtFilter?: RangeFilter<Date>;
126
+ completedAtFilter?: RangeFilter<Date>;
127
+ completionNotes?: string;
128
+ completionOdometerFilter?: RangeFilter<number>;
129
+ completionActiveHoursFilter?: RangeFilter<number>;
130
+ completedBy?: string;
131
+ modifiedBy?: string;
132
+ modifiedAtFilter?: RangeFilter<Date>;
133
+ queuedAtFilter?: RangeFilter<Date>;
134
+ predictedDueDateFilter?: RangeFilter<Date>;
135
+ deletedAtFilter?: RangeFilter<Date>;
136
+ deletedBy?: string;
137
+ }
138
+ export interface GetTasksParams {
139
+ filters: GetTasksFilters;
140
+ }
@@ -0,0 +1,7 @@
1
+ import { SelectQueryBuilder } from 'typeorm';
2
+ export interface FilterMap<T1, T2> {
3
+ targetFieldName: keyof T1;
4
+ filterName: keyof T2;
5
+ comparisonOperator?: 'RANGE' | '=' | 'LIKE';
6
+ }
7
+ export declare const addFilters: <T>(queryBuilder: SelectQueryBuilder<T>, filters: any, filterMapping: FilterMap<T, any>[]) => SelectQueryBuilder<T>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spytecgps/nova-orm",
3
- "version": "0.0.196",
3
+ "version": "0.0.197",
4
4
  "description": "ORM with PlanetScale",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",