@tmscloud/tbt-knex 0.0.13 → 0.0.15

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/dao/api-key/api-key.dao.js +2 -6
  2. package/dist/dao/api-key/api-key.dao.js.map +1 -1
  3. package/dist/dao/driver-tracking/driver-tracking.dao.d.ts +1 -9
  4. package/dist/dao/driver-tracking/driver-tracking.dao.js +11 -55
  5. package/dist/dao/driver-tracking/driver-tracking.dao.js.map +1 -1
  6. package/dist/dao/duty/duty.dao.d.ts +10 -2
  7. package/dist/dao/duty/duty.dao.js +27 -4
  8. package/dist/dao/duty/duty.dao.js.map +1 -1
  9. package/dist/dao/duty-item-progress/duty-item-progress.dao.js +1 -3
  10. package/dist/dao/duty-item-progress/duty-item-progress.dao.js.map +1 -1
  11. package/dist/dao/duty-template/duty-template.dao.d.ts +10 -2
  12. package/dist/dao/duty-template/duty-template.dao.js +39 -16
  13. package/dist/dao/duty-template/duty-template.dao.js.map +1 -1
  14. package/dist/dao/duty-track/duty-track.dao.d.ts +3 -4
  15. package/dist/dao/duty-track/duty-track.dao.js +8 -3
  16. package/dist/dao/duty-track/duty-track.dao.js.map +1 -1
  17. package/dist/dao/event/event.dao.js +3 -9
  18. package/dist/dao/event/event.dao.js.map +1 -1
  19. package/dist/dao/password-reset/password-reset.dao.js.map +1 -1
  20. package/dist/dao/route/route.dao.d.ts +7 -0
  21. package/dist/dao/route/route.dao.js +36 -0
  22. package/dist/dao/route/route.dao.js.map +1 -1
  23. package/dist/dao/system-setting/system-setting.dao.js.map +1 -1
  24. package/dist/dao/user/user.dao.d.ts +2 -6
  25. package/dist/dao/user/user.dao.js +23 -22
  26. package/dist/dao/user/user.dao.js.map +1 -1
  27. package/dist/index.d.ts +2 -7
  28. package/dist/index.js +1 -7
  29. package/dist/index.js.map +1 -1
  30. package/dist/interfaces/driver-tracking/driver-tracking.interfaces.d.ts +4 -17
  31. package/dist/interfaces/duty/duty.interfaces.d.ts +1 -1
  32. package/dist/interfaces/duty-template/duty-template.interfaces.d.ts +2 -0
  33. package/dist/interfaces/duty-track/duty-track.interfaces.d.ts +1 -1
  34. package/dist/interfaces/route/route-geojson.interfaces.d.ts +22 -6
  35. package/dist/interfaces/{trip-track/trip-track.interfaces.d.ts → tracking/tracking.interfaces.d.ts} +15 -40
  36. package/dist/interfaces/tracking/tracking.interfaces.js +7 -0
  37. package/dist/interfaces/tracking/tracking.interfaces.js.map +1 -0
  38. package/dist/interfaces/user/user.interfaces.d.ts +7 -0
  39. package/package.json +1 -1
  40. package/dist/dao/route-assignment/route-assignment.dao.d.ts +0 -58
  41. package/dist/dao/route-assignment/route-assignment.dao.js +0 -330
  42. package/dist/dao/route-assignment/route-assignment.dao.js.map +0 -1
  43. package/dist/dao/trip/trip.dao.d.ts +0 -107
  44. package/dist/dao/trip/trip.dao.js +0 -512
  45. package/dist/dao/trip/trip.dao.js.map +0 -1
  46. package/dist/dao/trip-track/trip-track.dao.d.ts +0 -56
  47. package/dist/dao/trip-track/trip-track.dao.js +0 -307
  48. package/dist/dao/trip-track/trip-track.dao.js.map +0 -1
  49. package/dist/interfaces/route-assignment/route-assignment.interfaces.d.ts +0 -18
  50. package/dist/interfaces/route-assignment/route-assignment.interfaces.js +0 -3
  51. package/dist/interfaces/route-assignment/route-assignment.interfaces.js.map +0 -1
  52. package/dist/interfaces/trip/trip.interfaces.d.ts +0 -48
  53. package/dist/interfaces/trip/trip.interfaces.js +0 -3
  54. package/dist/interfaces/trip/trip.interfaces.js.map +0 -1
  55. package/dist/interfaces/trip-track/trip-track.interfaces.js +0 -3
  56. package/dist/interfaces/trip-track/trip-track.interfaces.js.map +0 -1
@@ -1,56 +0,0 @@
1
- import { ITripTrack, ITripTrackCreate, ITrackPoint, ITrackStatistics, IConsolidatedTripHistory, IConsolidatedTripFilters } from "../../interfaces/trip-track/trip-track.interfaces";
2
- import { IDataPaginator } from "../../d.types";
3
- export declare class TripTrackDAO {
4
- private _knex?;
5
- private get knex();
6
- /**
7
- * Create consolidated trip track
8
- */
9
- create(data: ITripTrackCreate): Promise<ITripTrack>;
10
- /**
11
- * Get track by trip ID
12
- */
13
- getByTripId(tripId: number): Promise<ITripTrack | null>;
14
- /**
15
- * Get track by UUID
16
- */
17
- getByUuid(uuid: string): Promise<ITripTrack | null>;
18
- /**
19
- * Check if a trip already has a consolidated track
20
- */
21
- existsForTrip(tripId: number): Promise<boolean>;
22
- /**
23
- * Delete track by trip ID
24
- */
25
- deleteByTripId(tripId: number): Promise<boolean>;
26
- /**
27
- * Consolidate track from granular driver_tracking points.
28
- * Returns null if zero points provided (no trip_track record created).
29
- */
30
- consolidate(tripId: number, points: ITrackPoint[]): Promise<ITripTrack | null>;
31
- /**
32
- * Compute statistics from track points (single-pass)
33
- */
34
- computeStatistics(points: ITrackPoint[]): ITrackStatistics;
35
- /**
36
- * Calculate distance between two coordinates using Haversine formula.
37
- * Returns distance in kilometers.
38
- */
39
- private calculateDistance;
40
- private toRad;
41
- /**
42
- * Get consolidated trip history with filters and pagination
43
- */
44
- getConsolidatedHistory(filters: IConsolidatedTripFilters, page: number, limit: number): Promise<IDataPaginator<IConsolidatedTripHistory>>;
45
- /**
46
- * Consolidate a trip's tracking data in a single transaction:
47
- * reads raw points, computes stats, inserts track record,
48
- * deletes granular points, and marks the trip as consolidated.
49
- * Returns null if there were no tracking points.
50
- */
51
- consolidateFromTracking(tripId: number): Promise<ITripTrack | null>;
52
- /**
53
- * Parse JSONB fields from database result
54
- */
55
- private parseJson;
56
- }
@@ -1,307 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.TripTrackDAO = void 0;
16
- const KnexConnection_1 = __importDefault(require("../../KnexConnection"));
17
- class TripTrackDAO {
18
- get knex() {
19
- if (!this._knex) {
20
- this._knex = KnexConnection_1.default.getConnection();
21
- }
22
- return this._knex;
23
- }
24
- /**
25
- * Create consolidated trip track
26
- */
27
- create(data) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const [created] = yield this.knex("trip_track")
30
- .insert({
31
- trip_id: data.trip_id,
32
- track_data: JSON.stringify(data.track_data),
33
- max_speed: data.max_speed,
34
- max_altitude: data.max_altitude,
35
- total_distance: data.total_distance,
36
- total_points: data.total_points,
37
- start_coords: data.start_coords ? JSON.stringify(data.start_coords) : null,
38
- end_coords: data.end_coords ? JSON.stringify(data.end_coords) : null,
39
- duration_seconds: data.duration_seconds,
40
- })
41
- .returning("*");
42
- return this.parseJson(created);
43
- });
44
- }
45
- /**
46
- * Get track by trip ID
47
- */
48
- getByTripId(tripId) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- const result = yield this.knex("trip_track")
51
- .where("trip_id", tripId)
52
- .first();
53
- if (!result)
54
- return null;
55
- return this.parseJson(result);
56
- });
57
- }
58
- /**
59
- * Get track by UUID
60
- */
61
- getByUuid(uuid) {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- const result = yield this.knex("trip_track")
64
- .where("uuid", uuid)
65
- .first();
66
- if (!result)
67
- return null;
68
- return this.parseJson(result);
69
- });
70
- }
71
- /**
72
- * Check if a trip already has a consolidated track
73
- */
74
- existsForTrip(tripId) {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- const result = yield this.knex("trip_track")
77
- .where("trip_id", tripId)
78
- .count("id as count")
79
- .first();
80
- return Number((result === null || result === void 0 ? void 0 : result.count) || 0) > 0;
81
- });
82
- }
83
- /**
84
- * Delete track by trip ID
85
- */
86
- deleteByTripId(tripId) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- const deleted = yield this.knex("trip_track")
89
- .where("trip_id", tripId)
90
- .delete();
91
- return deleted > 0;
92
- });
93
- }
94
- /**
95
- * Consolidate track from granular driver_tracking points.
96
- * Returns null if zero points provided (no trip_track record created).
97
- */
98
- consolidate(tripId, points) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- if (points.length === 0) {
101
- return null;
102
- }
103
- const stats = this.computeStatistics(points);
104
- return this.create(Object.assign({ trip_id: tripId, track_data: points }, stats));
105
- });
106
- }
107
- /**
108
- * Compute statistics from track points (single-pass)
109
- */
110
- computeStatistics(points) {
111
- if (points.length === 0) {
112
- return {
113
- max_speed: null,
114
- max_altitude: null,
115
- total_distance: null,
116
- total_points: 0,
117
- start_coords: null,
118
- end_coords: null,
119
- duration_seconds: null,
120
- };
121
- }
122
- let maxSpeed = null;
123
- let maxAltitude = null;
124
- let totalDistance = 0;
125
- for (let i = 0; i < points.length; i++) {
126
- const point = points[i];
127
- if (point.speed !== null) {
128
- if (maxSpeed === null || point.speed > maxSpeed) {
129
- maxSpeed = point.speed;
130
- }
131
- }
132
- if (point.altitude !== null) {
133
- if (maxAltitude === null || point.altitude > maxAltitude) {
134
- maxAltitude = point.altitude;
135
- }
136
- }
137
- if (i > 0) {
138
- const prevPoint = points[i - 1];
139
- totalDistance += this.calculateDistance(prevPoint.lat, prevPoint.lng, point.lat, point.lng);
140
- }
141
- }
142
- const startCoords = { lat: points[0].lat, lng: points[0].lng };
143
- const endCoords = {
144
- lat: points[points.length - 1].lat,
145
- lng: points[points.length - 1].lng,
146
- };
147
- // Duration from first to last track point
148
- let durationSeconds = null;
149
- const firstTime = new Date(points[0].recorded_at).getTime();
150
- const lastTime = new Date(points[points.length - 1].recorded_at).getTime();
151
- if (!isNaN(firstTime) && !isNaN(lastTime)) {
152
- durationSeconds = Math.round((lastTime - firstTime) / 1000);
153
- }
154
- return {
155
- max_speed: maxSpeed,
156
- max_altitude: maxAltitude,
157
- total_distance: Math.round(totalDistance * 100) / 100,
158
- total_points: points.length,
159
- start_coords: startCoords,
160
- end_coords: endCoords,
161
- duration_seconds: durationSeconds,
162
- };
163
- }
164
- /**
165
- * Calculate distance between two coordinates using Haversine formula.
166
- * Returns distance in kilometers.
167
- */
168
- calculateDistance(lat1, lon1, lat2, lon2) {
169
- const R = 6371; // Earth's radius in kilometers
170
- const dLat = this.toRad(lat2 - lat1);
171
- const dLon = this.toRad(lon2 - lon1);
172
- const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
173
- Math.cos(this.toRad(lat1)) *
174
- Math.cos(this.toRad(lat2)) *
175
- Math.sin(dLon / 2) *
176
- Math.sin(dLon / 2);
177
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
178
- return R * c;
179
- }
180
- toRad(deg) {
181
- return deg * (Math.PI / 180);
182
- }
183
- /**
184
- * Get consolidated trip history with filters and pagination
185
- */
186
- getConsolidatedHistory(filters, page, limit) {
187
- return __awaiter(this, void 0, void 0, function* () {
188
- const offset = (page - 1) * limit;
189
- const query = this.knex("trip_track as tt")
190
- .join("trips as t", "tt.trip_id", "t.id")
191
- .join("users as u", "t.user_id", "u.id")
192
- .leftJoin("route_assignments as ra", "t.assignment_id", "ra.id")
193
- .leftJoin("routes as r", "ra.route_id", "r.id")
194
- .where("t.tracking_status", "consolidated")
195
- .select("t.uuid as trip_uuid", this.knex.raw(`jsonb_build_object('uuid', u.uuid, 'email', u.email, 'username', u.username, 'first_name', u.first_name, 'last_name', u.last_name) as "user"`), "ra.uuid as assignment_uuid", "r.uuid as route_uuid", "r.name as route_name", "t.actual_start as started_at", "t.actual_end as ended_at", "tt.total_points", "tt.total_distance", "tt.duration_seconds", "tt.max_speed");
196
- if (filters.user_id) {
197
- query.where("t.user_id", filters.user_id);
198
- }
199
- if (filters.from_date) {
200
- query.where("t.actual_start", ">=", filters.from_date);
201
- }
202
- if (filters.to_date) {
203
- query.where("t.actual_start", "<=", filters.to_date + " 23:59:59");
204
- }
205
- if (filters.trip_uuid) {
206
- query.whereRaw("t.uuid::text ilike ?", [`%${filters.trip_uuid}%`]);
207
- }
208
- const countResult = yield query
209
- .clone()
210
- .clearSelect()
211
- .clearOrder()
212
- .count("tt.id as count")
213
- .first();
214
- const totalCount = Number((countResult === null || countResult === void 0 ? void 0 : countResult.count) || 0);
215
- const totalPages = Math.ceil(totalCount / limit);
216
- const data = yield query
217
- .clone()
218
- .orderBy("t.actual_start", "desc")
219
- .limit(limit)
220
- .offset(offset);
221
- // Parse numeric fields
222
- const parsed = data.map((row) => (Object.assign(Object.assign({}, row), { user: typeof row.user === "string" ? JSON.parse(row.user) : row.user, total_points: Number(row.total_points), total_distance: row.total_distance !== null ? Number(row.total_distance) : null, duration_seconds: row.duration_seconds !== null ? Number(row.duration_seconds) : null, max_speed: row.max_speed !== null ? Number(row.max_speed) : null })));
223
- return {
224
- success: true,
225
- data: parsed,
226
- page,
227
- limit,
228
- count: parsed.length,
229
- totalCount,
230
- totalPages,
231
- };
232
- });
233
- }
234
- /**
235
- * Consolidate a trip's tracking data in a single transaction:
236
- * reads raw points, computes stats, inserts track record,
237
- * deletes granular points, and marks the trip as consolidated.
238
- * Returns null if there were no tracking points.
239
- */
240
- consolidateFromTracking(tripId) {
241
- return __awaiter(this, void 0, void 0, function* () {
242
- const knex = this.knex;
243
- return knex.transaction((trx) => __awaiter(this, void 0, void 0, function* () {
244
- const rawPoints = yield trx("driver_tracking")
245
- .where("trip_id", tripId)
246
- .orderBy("recorded_at", "asc");
247
- const trackPoints = rawPoints.map((p) => ({
248
- lat: Number(p.latitude),
249
- lng: Number(p.longitude),
250
- altitude: p.altitude ? Number(p.altitude) : null,
251
- speed: p.speed ? Number(p.speed) : null,
252
- heading: p.heading ? Number(p.heading) : null,
253
- accuracy: p.accuracy ? Number(p.accuracy) : null,
254
- recorded_at: typeof p.recorded_at === "string"
255
- ? p.recorded_at
256
- : p.recorded_at.toISOString(),
257
- }));
258
- let tripTrack = null;
259
- if (trackPoints.length > 0) {
260
- const stats = this.computeStatistics(trackPoints);
261
- const [created] = yield trx("trip_track")
262
- .insert({
263
- trip_id: tripId,
264
- track_data: JSON.stringify(trackPoints),
265
- max_speed: stats.max_speed,
266
- max_altitude: stats.max_altitude,
267
- total_distance: stats.total_distance,
268
- total_points: stats.total_points,
269
- start_coords: stats.start_coords
270
- ? JSON.stringify(stats.start_coords)
271
- : null,
272
- end_coords: stats.end_coords
273
- ? JSON.stringify(stats.end_coords)
274
- : null,
275
- duration_seconds: stats.duration_seconds,
276
- })
277
- .returning("*");
278
- tripTrack = this.parseJson(created);
279
- yield trx("driver_tracking").where("trip_id", tripId).delete();
280
- }
281
- yield trx("trips").where("id", tripId).update({
282
- tracking_status: "consolidated",
283
- updated_at: new Date(),
284
- });
285
- return tripTrack;
286
- }));
287
- });
288
- }
289
- /**
290
- * Parse JSONB fields from database result
291
- */
292
- parseJson(row) {
293
- return Object.assign(Object.assign({}, row), { track_data: typeof row.track_data === "string"
294
- ? JSON.parse(row.track_data)
295
- : row.track_data, start_coords: row.start_coords
296
- ? typeof row.start_coords === "string"
297
- ? JSON.parse(row.start_coords)
298
- : row.start_coords
299
- : null, end_coords: row.end_coords
300
- ? typeof row.end_coords === "string"
301
- ? JSON.parse(row.end_coords)
302
- : row.end_coords
303
- : null, max_speed: row.max_speed !== null ? Number(row.max_speed) : null, max_altitude: row.max_altitude !== null ? Number(row.max_altitude) : null, total_distance: row.total_distance !== null ? Number(row.total_distance) : null });
304
- }
305
- }
306
- exports.TripTrackDAO = TripTrackDAO;
307
- //# sourceMappingURL=trip-track.dao.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trip-track.dao.js","sourceRoot":"","sources":["../../../src/dao/trip-track/trip-track.dao.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { IRoute } from "../route/route.interfaces";
2
- import { IUserSafe } from "../user/user.interfaces";
3
- export interface IRouteAssignment {
4
- id?: number;
5
- uuid?: string;
6
- route_id: number;
7
- user_id: number;
8
- assigned_by?: number;
9
- start_date: Date | string;
10
- end_date?: Date | string;
11
- status?: "active" | "completed" | "cancelled";
12
- notes?: string;
13
- created_at?: Date;
14
- updated_at?: Date;
15
- route?: IRoute;
16
- user?: IUserSafe;
17
- assigner?: IUserSafe;
18
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=route-assignment.interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-assignment.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/route-assignment/route-assignment.interfaces.ts"],"names":[],"mappings":""}
@@ -1,48 +0,0 @@
1
- import { IRoute } from "../route/route.interfaces";
2
- import { IUser } from "../user/user.interfaces";
3
- import { IRouteAssignment } from "../route-assignment/route-assignment.interfaces";
4
- import { TrackingStatus } from "../trip-track/trip-track.interfaces";
5
- export interface ITrip {
6
- id?: number;
7
- uuid?: string;
8
- assignment_id: number;
9
- user_id: number;
10
- route_id: number;
11
- scheduled_start: Date | string;
12
- scheduled_end?: Date | string;
13
- actual_start?: Date | string;
14
- actual_end?: Date | string;
15
- status: "pending" | "in_progress" | "completed" | "cancelled";
16
- tracking_status?: TrackingStatus;
17
- manifest_data?: any;
18
- distance_traveled?: number;
19
- duration_minutes?: number;
20
- notes?: string;
21
- created_at?: Date | string;
22
- updated_at?: Date | string;
23
- route?: IRoute;
24
- user?: IUser;
25
- assignment?: IRouteAssignment;
26
- }
27
- export interface ITripStop {
28
- id?: number;
29
- uuid?: string;
30
- trip_id: number;
31
- stop_order: number;
32
- latitude: number;
33
- longitude: number;
34
- address?: string;
35
- name?: string;
36
- scheduled_time?: Date | string;
37
- actual_arrival_time?: Date | string;
38
- actual_departure_time?: Date | string;
39
- status: "pending" | "arrived" | "completed" | "skipped";
40
- instructions?: string;
41
- metadata?: any;
42
- notes?: string;
43
- created_at?: Date | string;
44
- updated_at?: Date | string;
45
- }
46
- export interface ITripWithStops extends ITrip {
47
- stops?: ITripStop[];
48
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=trip.interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trip.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/trip/trip.interfaces.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=trip-track.interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trip-track.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/trip-track/trip-track.interfaces.ts"],"names":[],"mappings":""}