@tmscloud/tbt-knex 0.0.2 → 0.0.4
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.
- package/dist/dao/driver-tracking/driver-tracking.dao.d.ts +17 -12
- package/dist/dao/driver-tracking/driver-tracking.dao.js +107 -123
- package/dist/dao/driver-tracking/driver-tracking.dao.js.map +1 -1
- package/dist/dao/event/event.dao.js +3 -9
- package/dist/dao/event/event.dao.js.map +1 -1
- package/dist/dao/trip/trip.dao.d.ts +5 -0
- package/dist/dao/trip/trip.dao.js +10 -0
- package/dist/dao/trip/trip.dao.js.map +1 -1
- package/dist/dao/trip-track/trip-track.dao.d.ts +49 -0
- package/dist/dao/trip-track/trip-track.dao.js +252 -0
- package/dist/dao/trip-track/trip-track.dao.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces/driver-tracking/driver-tracking.interfaces.d.ts +23 -44
- package/dist/interfaces/trip/trip.interfaces.d.ts +2 -0
- package/dist/interfaces/trip-track/trip-track.interfaces.d.ts +82 -0
- package/dist/interfaces/{gps-location/gps-location.interfaces.js → trip-track/trip-track.interfaces.js} +1 -1
- package/dist/interfaces/trip-track/trip-track.interfaces.js.map +1 -0
- package/package.json +1 -1
- package/dist/dao/gps-location/gps-location.dao.d.ts +0 -76
- package/dist/dao/gps-location/gps-location.dao.js +0 -364
- package/dist/dao/gps-location/gps-location.dao.js.map +0 -1
- package/dist/interfaces/gps-location/gps-location.interfaces.d.ts +0 -30
- package/dist/interfaces/gps-location/gps-location.interfaces.js.map +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
* Parse JSONB fields from database result
|
|
47
|
+
*/
|
|
48
|
+
private parseJson;
|
|
49
|
+
}
|
|
@@ -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,21 +1,21 @@
|
|
|
1
1
|
export { DriverTrackingDAO } from "./dao/driver-tracking/driver-tracking.dao";
|
|
2
2
|
export { EventDAO } from "./dao/event/event.dao";
|
|
3
|
-
export { GPSLocationDAO } from "./dao/gps-location/gps-location.dao";
|
|
4
3
|
export { RoleDAO } from "./dao/role/role.dao";
|
|
5
4
|
export { RouteDAO } from "./dao/route/route.dao";
|
|
6
5
|
export { RouteAssignmentDAO } from "./dao/route-assignment/route-assignment.dao";
|
|
7
6
|
export { SundaysPackageVersionDAO } from "./dao/sundays-package-version/sundays-package-version.dao";
|
|
8
7
|
export { TripDAO } from "./dao/trip/trip.dao";
|
|
8
|
+
export { TripTrackDAO } from "./dao/trip-track/trip-track.dao";
|
|
9
9
|
export { UserDAO } from "./dao/user/user.dao";
|
|
10
10
|
export { IDataPaginator } from "./d.types";
|
|
11
|
-
export { IDriverTracking,
|
|
11
|
+
export { IDriverTracking, IDriverTrackingBatchCreate, ITrackingPointInput, ITrackingMetadata, IActiveDriver, ITrackingSession, ITrackingFilters, } from "./interfaces/driver-tracking/driver-tracking.interfaces";
|
|
12
12
|
export { IEvent, IEventCreate, IEventUpdate, } from "./interfaces/event/event.interfaces";
|
|
13
|
-
export { IGPSLocation, IGPSLocationWithDistance, ITripLocationSummary, } from "./interfaces/gps-location/gps-location.interfaces";
|
|
14
13
|
export { IRole } from "./interfaces/role/role.interfaces";
|
|
15
14
|
export { IRoute, IRouteInstruction } from "./interfaces/route/route.interfaces";
|
|
16
15
|
export { IRouteAssignment } from "./interfaces/route-assignment/route-assignment.interfaces";
|
|
17
16
|
export { ISundaysPackageVersion } from "./interfaces/sundays-package-version/sundays-package-version.interfaces";
|
|
18
17
|
export { ITrip, ITripStop, ITripWithStops, } from "./interfaces/trip/trip.interfaces";
|
|
18
|
+
export { ITripTrack, ITripTrackCreate, ITrackPoint, ITrackStatistics, TrackingStatus, IConsolidatedTripHistory, IConsolidatedTripFilters, } from "./interfaces/trip-track/trip-track.interfaces";
|
|
19
19
|
export { IUser, IUserSafe, IRefreshToken, } from "./interfaces/user/user.interfaces";
|
|
20
20
|
import KnexManager from "./KnexConnection";
|
|
21
21
|
export { KnexManager };
|
package/dist/index.js
CHANGED
|
@@ -3,14 +3,12 @@ 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.UserDAO = exports.TripDAO = exports.SundaysPackageVersionDAO = exports.RouteAssignmentDAO = exports.RouteDAO = exports.RoleDAO = exports.
|
|
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
8
|
var driver_tracking_dao_1 = require("./dao/driver-tracking/driver-tracking.dao");
|
|
9
9
|
Object.defineProperty(exports, "DriverTrackingDAO", { enumerable: true, get: function () { return driver_tracking_dao_1.DriverTrackingDAO; } });
|
|
10
10
|
var event_dao_1 = require("./dao/event/event.dao");
|
|
11
11
|
Object.defineProperty(exports, "EventDAO", { enumerable: true, get: function () { return event_dao_1.EventDAO; } });
|
|
12
|
-
var gps_location_dao_1 = require("./dao/gps-location/gps-location.dao");
|
|
13
|
-
Object.defineProperty(exports, "GPSLocationDAO", { enumerable: true, get: function () { return gps_location_dao_1.GPSLocationDAO; } });
|
|
14
12
|
var role_dao_1 = require("./dao/role/role.dao");
|
|
15
13
|
Object.defineProperty(exports, "RoleDAO", { enumerable: true, get: function () { return role_dao_1.RoleDAO; } });
|
|
16
14
|
var route_dao_1 = require("./dao/route/route.dao");
|
|
@@ -21,6 +19,8 @@ var sundays_package_version_dao_1 = require("./dao/sundays-package-version/sunda
|
|
|
21
19
|
Object.defineProperty(exports, "SundaysPackageVersionDAO", { enumerable: true, get: function () { return sundays_package_version_dao_1.SundaysPackageVersionDAO; } });
|
|
22
20
|
var trip_dao_1 = require("./dao/trip/trip.dao");
|
|
23
21
|
Object.defineProperty(exports, "TripDAO", { enumerable: true, get: function () { return trip_dao_1.TripDAO; } });
|
|
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
24
|
var user_dao_1 = require("./dao/user/user.dao");
|
|
25
25
|
Object.defineProperty(exports, "UserDAO", { enumerable: true, get: function () { return user_dao_1.UserDAO; } });
|
|
26
26
|
const KnexConnection_1 = __importDefault(require("./KnexConnection"));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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?:
|
|
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
|
|
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
|
-
|
|
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
|
|
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:
|
|
45
|
+
recorded_at: string;
|
|
63
46
|
metadata?: ITrackingMetadata | null;
|
|
64
47
|
}
|
|
65
48
|
export interface IActiveDriver {
|
|
66
|
-
|
|
67
|
-
user?: IUserSafe;
|
|
49
|
+
user: any;
|
|
68
50
|
session_id: string;
|
|
69
|
-
|
|
70
|
-
|
|
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
|
|
75
|
-
speed
|
|
76
|
-
recorded_at:
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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?:
|
|
100
|
-
to_date?:
|
|
78
|
+
from_date?: string;
|
|
79
|
+
to_date?: string;
|
|
101
80
|
is_navigating?: boolean;
|
|
102
81
|
}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"trip-track.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/trip-track/trip-track.interfaces.ts"],"names":[],"mappings":""}
|