@tmscloud/tbt-knex 0.0.1 → 0.0.3

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 (36) hide show
  1. package/.github/workflows/build-and-push.yml +118 -0
  2. package/Dockerfile +36 -0
  3. package/build-image.sh +16 -0
  4. package/dist/dao/driver-tracking/driver-tracking.dao.d.ts +17 -12
  5. package/dist/dao/driver-tracking/driver-tracking.dao.js +107 -123
  6. package/dist/dao/driver-tracking/driver-tracking.dao.js.map +1 -1
  7. package/dist/dao/event/event.dao.d.ts +38 -0
  8. package/dist/dao/event/event.dao.js +156 -0
  9. package/dist/dao/event/event.dao.js.map +1 -0
  10. package/dist/dao/route/route.dao.d.ts +10 -2
  11. package/dist/dao/route/route.dao.js +94 -9
  12. package/dist/dao/route/route.dao.js.map +1 -1
  13. package/dist/dao/trip/trip.dao.d.ts +5 -0
  14. package/dist/dao/trip/trip.dao.js +10 -0
  15. package/dist/dao/trip/trip.dao.js.map +1 -1
  16. package/dist/dao/trip-track/trip-track.dao.d.ts +49 -0
  17. package/dist/dao/trip-track/trip-track.dao.js +252 -0
  18. package/dist/dao/trip-track/trip-track.dao.js.map +1 -0
  19. package/dist/index.d.ts +12 -10
  20. package/dist/index.js +13 -11
  21. package/dist/index.js.map +1 -1
  22. package/dist/interfaces/driver-tracking/driver-tracking.interfaces.d.ts +23 -44
  23. package/dist/interfaces/event/event.interfaces.d.ts +22 -0
  24. package/dist/interfaces/{gps-location/gps-location.interfaces.js → event/event.interfaces.js} +1 -1
  25. package/dist/interfaces/event/event.interfaces.js.map +1 -0
  26. package/dist/interfaces/route/route.interfaces.d.ts +3 -0
  27. package/dist/interfaces/trip/trip.interfaces.d.ts +2 -0
  28. package/dist/interfaces/trip-track/trip-track.interfaces.d.ts +82 -0
  29. package/dist/interfaces/trip-track/trip-track.interfaces.js +3 -0
  30. package/dist/interfaces/trip-track/trip-track.interfaces.js.map +1 -0
  31. package/package.json +1 -1
  32. package/dist/dao/gps-location/gps-location.dao.d.ts +0 -76
  33. package/dist/dao/gps-location/gps-location.dao.js +0 -364
  34. package/dist/dao/gps-location/gps-location.dao.js.map +0 -1
  35. package/dist/interfaces/gps-location/gps-location.interfaces.d.ts +0 -30
  36. package/dist/interfaces/gps-location/gps-location.interfaces.js.map +0 -1
@@ -0,0 +1,252 @@
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
38
+ ? JSON.stringify(data.start_coords)
39
+ : null,
40
+ end_coords: data.end_coords ? JSON.stringify(data.end_coords) : null,
41
+ duration_seconds: data.duration_seconds,
42
+ })
43
+ .returning("*");
44
+ return this.parseJson(created);
45
+ });
46
+ }
47
+ /**
48
+ * Get track by trip ID
49
+ */
50
+ getByTripId(tripId) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const result = yield this.knex("trip_track")
53
+ .where("trip_id", tripId)
54
+ .first();
55
+ if (!result)
56
+ return null;
57
+ return this.parseJson(result);
58
+ });
59
+ }
60
+ /**
61
+ * Get track by UUID
62
+ */
63
+ getByUuid(uuid) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const result = yield this.knex("trip_track").where("uuid", uuid).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
+ * Parse JSONB fields from database result
236
+ */
237
+ parseJson(row) {
238
+ return Object.assign(Object.assign({}, row), { track_data: typeof row.track_data === "string"
239
+ ? JSON.parse(row.track_data)
240
+ : row.track_data, start_coords: row.start_coords
241
+ ? typeof row.start_coords === "string"
242
+ ? JSON.parse(row.start_coords)
243
+ : row.start_coords
244
+ : null, end_coords: row.end_coords
245
+ ? typeof row.end_coords === "string"
246
+ ? JSON.parse(row.end_coords)
247
+ : row.end_coords
248
+ : 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 });
249
+ }
250
+ }
251
+ exports.TripTrackDAO = TripTrackDAO;
252
+ //# sourceMappingURL=trip-track.dao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trip-track.dao.js","sourceRoot":"","sources":["../../../src/dao/trip-track/trip-track.dao.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,19 +1,21 @@
1
- export { SundaysPackageVersionDAO } from "./dao/sundays-package-version/sundays-package-version.dao";
2
- export { RouteDAO } from "./dao/route/route.dao";
1
+ export { DriverTrackingDAO } from "./dao/driver-tracking/driver-tracking.dao";
2
+ export { EventDAO } from "./dao/event/event.dao";
3
3
  export { RoleDAO } from "./dao/role/role.dao";
4
- export { UserDAO } from "./dao/user/user.dao";
4
+ export { RouteDAO } from "./dao/route/route.dao";
5
5
  export { RouteAssignmentDAO } from "./dao/route-assignment/route-assignment.dao";
6
+ export { SundaysPackageVersionDAO } from "./dao/sundays-package-version/sundays-package-version.dao";
6
7
  export { TripDAO } from "./dao/trip/trip.dao";
7
- export { GPSLocationDAO } from "./dao/gps-location/gps-location.dao";
8
- export { DriverTrackingDAO } from "./dao/driver-tracking/driver-tracking.dao";
8
+ export { TripTrackDAO } from "./dao/trip-track/trip-track.dao";
9
+ export { UserDAO } from "./dao/user/user.dao";
9
10
  export { IDataPaginator } from "./d.types";
10
- export { ISundaysPackageVersion } from "./interfaces/sundays-package-version/sundays-package-version.interfaces";
11
- export { IRoute, IRouteInstruction } from "./interfaces/route/route.interfaces";
11
+ export { IDriverTracking, IDriverTrackingBatchCreate, ITrackingPointInput, ITrackingMetadata, IActiveDriver, ITrackingSession, ITrackingFilters, } from "./interfaces/driver-tracking/driver-tracking.interfaces";
12
+ export { IEvent, IEventCreate, IEventUpdate, } from "./interfaces/event/event.interfaces";
12
13
  export { IRole } from "./interfaces/role/role.interfaces";
13
- export { IUser, IUserSafe, IRefreshToken, } from "./interfaces/user/user.interfaces";
14
+ export { IRoute, IRouteInstruction } from "./interfaces/route/route.interfaces";
14
15
  export { IRouteAssignment } from "./interfaces/route-assignment/route-assignment.interfaces";
16
+ export { ISundaysPackageVersion } from "./interfaces/sundays-package-version/sundays-package-version.interfaces";
15
17
  export { ITrip, ITripStop, ITripWithStops, } from "./interfaces/trip/trip.interfaces";
16
- export { IGPSLocation, IGPSLocationWithDistance, ITripLocationSummary, } from "./interfaces/gps-location/gps-location.interfaces";
17
- export { IDriverTracking, IDriverTrackingCreate, IDriverTrackingBatchCreate, ITrackingPoint, ITrackingMetadata, IActiveDriver, ITrackingSession, ITrackingFilters, } from "./interfaces/driver-tracking/driver-tracking.interfaces";
18
+ export { ITripTrack, ITripTrackCreate, ITrackPoint, ITrackStatistics, TrackingStatus, IConsolidatedTripHistory, IConsolidatedTripFilters, } from "./interfaces/trip-track/trip-track.interfaces";
19
+ export { IUser, IUserSafe, IRefreshToken, } from "./interfaces/user/user.interfaces";
18
20
  import KnexManager from "./KnexConnection";
19
21
  export { KnexManager };
package/dist/index.js CHANGED
@@ -3,24 +3,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.KnexManager = exports.DriverTrackingDAO = exports.GPSLocationDAO = exports.TripDAO = exports.RouteAssignmentDAO = exports.UserDAO = exports.RoleDAO = exports.RouteDAO = exports.SundaysPackageVersionDAO = void 0;
6
+ exports.KnexManager = exports.UserDAO = exports.TripTrackDAO = exports.TripDAO = exports.SundaysPackageVersionDAO = exports.RouteAssignmentDAO = exports.RouteDAO = exports.RoleDAO = exports.EventDAO = exports.DriverTrackingDAO = void 0;
7
7
  // DAOs
8
- var sundays_package_version_dao_1 = require("./dao/sundays-package-version/sundays-package-version.dao");
9
- Object.defineProperty(exports, "SundaysPackageVersionDAO", { enumerable: true, get: function () { return sundays_package_version_dao_1.SundaysPackageVersionDAO; } });
10
- var route_dao_1 = require("./dao/route/route.dao");
11
- Object.defineProperty(exports, "RouteDAO", { enumerable: true, get: function () { return route_dao_1.RouteDAO; } });
8
+ var driver_tracking_dao_1 = require("./dao/driver-tracking/driver-tracking.dao");
9
+ Object.defineProperty(exports, "DriverTrackingDAO", { enumerable: true, get: function () { return driver_tracking_dao_1.DriverTrackingDAO; } });
10
+ var event_dao_1 = require("./dao/event/event.dao");
11
+ Object.defineProperty(exports, "EventDAO", { enumerable: true, get: function () { return event_dao_1.EventDAO; } });
12
12
  var role_dao_1 = require("./dao/role/role.dao");
13
13
  Object.defineProperty(exports, "RoleDAO", { enumerable: true, get: function () { return role_dao_1.RoleDAO; } });
14
- var user_dao_1 = require("./dao/user/user.dao");
15
- Object.defineProperty(exports, "UserDAO", { enumerable: true, get: function () { return user_dao_1.UserDAO; } });
14
+ var route_dao_1 = require("./dao/route/route.dao");
15
+ Object.defineProperty(exports, "RouteDAO", { enumerable: true, get: function () { return route_dao_1.RouteDAO; } });
16
16
  var route_assignment_dao_1 = require("./dao/route-assignment/route-assignment.dao");
17
17
  Object.defineProperty(exports, "RouteAssignmentDAO", { enumerable: true, get: function () { return route_assignment_dao_1.RouteAssignmentDAO; } });
18
+ var sundays_package_version_dao_1 = require("./dao/sundays-package-version/sundays-package-version.dao");
19
+ Object.defineProperty(exports, "SundaysPackageVersionDAO", { enumerable: true, get: function () { return sundays_package_version_dao_1.SundaysPackageVersionDAO; } });
18
20
  var trip_dao_1 = require("./dao/trip/trip.dao");
19
21
  Object.defineProperty(exports, "TripDAO", { enumerable: true, get: function () { return trip_dao_1.TripDAO; } });
20
- var gps_location_dao_1 = require("./dao/gps-location/gps-location.dao");
21
- Object.defineProperty(exports, "GPSLocationDAO", { enumerable: true, get: function () { return gps_location_dao_1.GPSLocationDAO; } });
22
- var driver_tracking_dao_1 = require("./dao/driver-tracking/driver-tracking.dao");
23
- Object.defineProperty(exports, "DriverTrackingDAO", { enumerable: true, get: function () { return driver_tracking_dao_1.DriverTrackingDAO; } });
22
+ var trip_track_dao_1 = require("./dao/trip-track/trip-track.dao");
23
+ Object.defineProperty(exports, "TripTrackDAO", { enumerable: true, get: function () { return trip_track_dao_1.TripTrackDAO; } });
24
+ var user_dao_1 = require("./dao/user/user.dao");
25
+ Object.defineProperty(exports, "UserDAO", { enumerable: true, get: function () { return user_dao_1.UserDAO; } });
24
26
  const KnexConnection_1 = __importDefault(require("./KnexConnection"));
25
27
  exports.KnexManager = KnexConnection_1.default;
26
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO;AACP,yGAAqG;AAA5F,uIAAA,wBAAwB,OAAA;AACjC,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,oFAAiF;AAAxE,0HAAA,kBAAkB,OAAA;AAC3B,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,wEAAqE;AAA5D,kHAAA,cAAc,OAAA;AACvB,iFAA8E;AAArE,wHAAA,iBAAiB,OAAA;AAkC1B,sEAA2C;AAClC,sBADF,wBAAW,CACE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO;AACP,iFAA8E;AAArE,wHAAA,iBAAiB,OAAA;AAC1B,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,oFAAiF;AAAxE,0HAAA,kBAAkB,OAAA;AAC3B,yGAAqG;AAA5F,uIAAA,wBAAwB,OAAA;AACjC,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,kEAA+D;AAAtD,8GAAA,YAAY,OAAA;AACrB,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AA0ChB,sEAA2C;AAClC,sBADF,wBAAW,CACE"}
@@ -1,10 +1,8 @@
1
- import { IUserSafe } from "../user/user.interfaces";
2
- import { IRouteAssignment } from "../route-assignment/route-assignment.interfaces";
3
- import { IRoute } from "../route/route.interfaces";
4
1
  export interface IDriverTracking {
5
2
  id?: number;
6
3
  uuid?: string;
7
4
  user_id: number;
5
+ trip_id: number;
8
6
  assignment_id?: number | null;
9
7
  route_id?: number | null;
10
8
  session_id: string;
@@ -19,9 +17,7 @@ export interface IDriverTracking {
19
17
  metadata?: ITrackingMetadata | null;
20
18
  created_at?: Date | string;
21
19
  updated_at?: Date | string;
22
- user?: IUserSafe;
23
- assignment?: IRouteAssignment;
24
- route?: IRoute;
20
+ user?: any;
25
21
  }
26
22
  export interface ITrackingMetadata {
27
23
  battery_level?: number;
@@ -31,72 +27,55 @@ export interface ITrackingMetadata {
31
27
  device_model?: string;
32
28
  os_version?: string;
33
29
  }
34
- export interface IDriverTrackingCreate {
30
+ export interface IDriverTrackingBatchCreate {
35
31
  user_id: number;
32
+ trip_id: number;
36
33
  assignment_id?: number | null;
37
34
  route_id?: number | null;
38
35
  session_id: string;
39
- latitude: number;
40
- longitude: number;
41
- accuracy?: number | null;
42
- altitude?: number | null;
43
- speed?: number | null;
44
- heading?: number | null;
45
- recorded_at: Date | string;
46
- is_navigating?: boolean;
47
- metadata?: ITrackingMetadata | null;
48
- }
49
- export interface IDriverTrackingBatchCreate {
50
- session_id: string;
51
- assignment_id?: number | null;
52
- route_id?: number | null;
53
- points: ITrackingPoint[];
36
+ points: ITrackingPointInput[];
54
37
  }
55
- export interface ITrackingPoint {
38
+ export interface ITrackingPointInput {
56
39
  latitude: number;
57
40
  longitude: number;
58
41
  accuracy?: number | null;
59
42
  altitude?: number | null;
60
43
  speed?: number | null;
61
44
  heading?: number | null;
62
- recorded_at: Date | string;
45
+ recorded_at: string;
63
46
  metadata?: ITrackingMetadata | null;
64
47
  }
65
48
  export interface IActiveDriver {
66
- user_id: number;
67
- user?: IUserSafe;
49
+ user: any;
68
50
  session_id: string;
69
- assignment_id?: number | null;
70
- assignment?: IRouteAssignment;
51
+ trip_uuid: string;
52
+ assignment_uuid?: string | null;
53
+ route_uuid?: string | null;
71
54
  current_location: {
72
55
  latitude: number;
73
56
  longitude: number;
74
- heading?: number | null;
75
- speed?: number | null;
76
- recorded_at: Date | string;
57
+ heading: number | null;
58
+ speed: number | null;
59
+ recorded_at: string;
77
60
  };
78
- is_navigating: boolean;
79
61
  }
80
62
  export interface ITrackingSession {
81
63
  session_id: string;
82
- user_id: number;
83
- user?: IUserSafe;
84
- assignment_id?: number | null;
85
- assignment?: IRouteAssignment;
86
- route_id?: number | null;
87
- route?: IRoute;
88
- started_at: Date | string;
89
- ended_at?: Date | string;
64
+ user: any;
65
+ trip_uuid: string;
66
+ assignment_uuid?: string | null;
67
+ route_uuid?: string | null;
68
+ started_at: string;
69
+ ended_at?: string;
90
70
  total_points: number;
91
- total_distance_km?: number;
92
- duration_seconds?: number;
93
71
  }
94
72
  export interface ITrackingFilters {
95
73
  user_id?: number;
74
+ trip_id?: number;
96
75
  assignment_id?: number;
97
76
  route_id?: number;
98
77
  session_id?: string;
99
- from_date?: Date | string;
100
- to_date?: Date | string;
78
+ from_date?: string;
79
+ to_date?: string;
101
80
  is_navigating?: boolean;
102
81
  }
@@ -0,0 +1,22 @@
1
+ export interface IEvent {
2
+ id?: number;
3
+ uuid?: string;
4
+ name: string;
5
+ start_date?: Date | string | null;
6
+ end_date?: Date | string | null;
7
+ is_active?: boolean;
8
+ created_at?: Date | string;
9
+ updated_at?: Date | string;
10
+ }
11
+ export interface IEventCreate {
12
+ name: string;
13
+ start_date?: Date | string | null;
14
+ end_date?: Date | string | null;
15
+ is_active?: boolean;
16
+ }
17
+ export interface IEventUpdate {
18
+ name?: string;
19
+ start_date?: Date | string | null;
20
+ end_date?: Date | string | null;
21
+ is_active?: boolean;
22
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=gps-location.interfaces.js.map
3
+ //# sourceMappingURL=event.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/event/event.interfaces.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import { IEvent } from "../event/event.interfaces";
1
2
  export interface IRoute {
2
3
  id?: number;
3
4
  uuid?: string;
@@ -7,6 +8,8 @@ export interface IRoute {
7
8
  custom_instructions?: any[];
8
9
  distance?: number;
9
10
  estimated_duration?: number;
11
+ event_id?: number;
12
+ event?: IEvent;
10
13
  is_active?: boolean;
11
14
  created_at?: Date;
12
15
  updated_at?: Date;
@@ -1,6 +1,7 @@
1
1
  import { IRoute } from "../route/route.interfaces";
2
2
  import { IUser } from "../user/user.interfaces";
3
3
  import { IRouteAssignment } from "../route-assignment/route-assignment.interfaces";
4
+ import { TrackingStatus } from "../trip-track/trip-track.interfaces";
4
5
  export interface ITrip {
5
6
  id?: number;
6
7
  uuid?: string;
@@ -12,6 +13,7 @@ export interface ITrip {
12
13
  actual_start?: Date | string;
13
14
  actual_end?: Date | string;
14
15
  status: "pending" | "in_progress" | "completed" | "cancelled";
16
+ tracking_status?: TrackingStatus;
15
17
  manifest_data?: any;
16
18
  distance_traveled?: number;
17
19
  duration_minutes?: number;
@@ -0,0 +1,82 @@
1
+ export interface ITrackPoint {
2
+ lat: number;
3
+ lng: number;
4
+ altitude: number | null;
5
+ speed: number | null;
6
+ heading: number | null;
7
+ accuracy: number | null;
8
+ recorded_at: string;
9
+ }
10
+ export interface ITrackStatistics {
11
+ max_speed: number | null;
12
+ max_altitude: number | null;
13
+ total_distance: number | null;
14
+ total_points: number;
15
+ start_coords: {
16
+ lat: number;
17
+ lng: number;
18
+ } | null;
19
+ end_coords: {
20
+ lat: number;
21
+ lng: number;
22
+ } | null;
23
+ duration_seconds: number | null;
24
+ }
25
+ export interface ITripTrack {
26
+ id?: number;
27
+ uuid?: string;
28
+ trip_id: number;
29
+ track_data: ITrackPoint[];
30
+ max_speed: number | null;
31
+ max_altitude: number | null;
32
+ total_distance: number | null;
33
+ total_points: number;
34
+ start_coords: {
35
+ lat: number;
36
+ lng: number;
37
+ } | null;
38
+ end_coords: {
39
+ lat: number;
40
+ lng: number;
41
+ } | null;
42
+ duration_seconds: number | null;
43
+ created_at?: string;
44
+ updated_at?: string;
45
+ }
46
+ export interface ITripTrackCreate {
47
+ trip_id: number;
48
+ track_data: ITrackPoint[];
49
+ max_speed: number | null;
50
+ max_altitude: number | null;
51
+ total_distance: number | null;
52
+ total_points: number;
53
+ start_coords: {
54
+ lat: number;
55
+ lng: number;
56
+ } | null;
57
+ end_coords: {
58
+ lat: number;
59
+ lng: number;
60
+ } | null;
61
+ duration_seconds: number | null;
62
+ }
63
+ export type TrackingStatus = "none" | "tracking" | "syncing" | "consolidated";
64
+ export interface IConsolidatedTripHistory {
65
+ trip_uuid: string;
66
+ user: any;
67
+ assignment_uuid: string | null;
68
+ route_uuid: string | null;
69
+ route_name: string | null;
70
+ started_at: string | null;
71
+ ended_at: string | null;
72
+ total_points: number;
73
+ total_distance: number | null;
74
+ duration_seconds: number | null;
75
+ max_speed: number | null;
76
+ }
77
+ export interface IConsolidatedTripFilters {
78
+ user_id?: number;
79
+ from_date?: string;
80
+ to_date?: string;
81
+ trip_uuid?: string;
82
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=trip-track.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trip-track.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/trip-track/trip-track.interfaces.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmscloud/tbt-knex",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "TBT Database Access Layer",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {