@voyantjs/ground 0.1.1 → 0.3.0
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/schema-dispatch.d.ts +733 -0
- package/dist/schema-dispatch.d.ts.map +1 -0
- package/dist/schema-dispatch.js +79 -0
- package/dist/schema-operations.d.ts +1368 -0
- package/dist/schema-operations.d.ts.map +1 -0
- package/dist/schema-operations.js +155 -0
- package/dist/schema-operators.d.ts +625 -0
- package/dist/schema-operators.d.ts.map +1 -0
- package/dist/schema-operators.js +62 -0
- package/dist/schema-relations.d.ts +63 -0
- package/dist/schema-relations.d.ts.map +1 -0
- package/dist/schema-relations.js +152 -0
- package/dist/schema-shared.d.ts +12 -0
- package/dist/schema-shared.d.ts.map +1 -0
- package/dist/schema-shared.js +84 -0
- package/dist/schema.d.ts +5 -2796
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +5 -513
- package/dist/service-dispatch-core.d.ts +255 -0
- package/dist/service-dispatch-core.d.ts.map +1 -0
- package/dist/service-dispatch-core.js +171 -0
- package/dist/service-dispatch-ops.d.ts +307 -0
- package/dist/service-dispatch-ops.d.ts.map +1 -0
- package/dist/service-dispatch-ops.js +272 -0
- package/dist/service-resources.d.ts +251 -0
- package/dist/service-resources.d.ts.map +1 -0
- package/dist/service-resources.js +183 -0
- package/dist/service-shared.d.ts +48 -0
- package/dist/service-shared.d.ts.map +1 -0
- package/dist/service-shared.js +7 -0
- package/dist/service.d.ts +63 -844
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +63 -628
- package/package.json +6 -6
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
2
|
+
import type { CreateGroundDriverInput, CreateGroundDriverShiftInput, CreateGroundOperatorInput, CreateGroundVehicleInput, GroundDriverListQuery, GroundDriverShiftListQuery, GroundOperatorListQuery, GroundVehicleListQuery, UpdateGroundDriverInput, UpdateGroundDriverShiftInput, UpdateGroundOperatorInput, UpdateGroundVehicleInput } from "./service-shared.js";
|
|
3
|
+
export declare function listOperators(db: PostgresJsDatabase, query: GroundOperatorListQuery): Promise<{
|
|
4
|
+
data: {
|
|
5
|
+
id: string;
|
|
6
|
+
supplierId: string | null;
|
|
7
|
+
facilityId: string | null;
|
|
8
|
+
name: string;
|
|
9
|
+
code: string | null;
|
|
10
|
+
active: boolean;
|
|
11
|
+
notes: string | null;
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
updatedAt: Date;
|
|
14
|
+
}[];
|
|
15
|
+
total: number;
|
|
16
|
+
limit: number;
|
|
17
|
+
offset: number;
|
|
18
|
+
}>;
|
|
19
|
+
export declare function getOperatorById(db: PostgresJsDatabase, id: string): Promise<{
|
|
20
|
+
id: string;
|
|
21
|
+
supplierId: string | null;
|
|
22
|
+
facilityId: string | null;
|
|
23
|
+
name: string;
|
|
24
|
+
code: string | null;
|
|
25
|
+
active: boolean;
|
|
26
|
+
notes: string | null;
|
|
27
|
+
createdAt: Date;
|
|
28
|
+
updatedAt: Date;
|
|
29
|
+
} | null>;
|
|
30
|
+
export declare function createOperator(db: PostgresJsDatabase, data: CreateGroundOperatorInput): Promise<{
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
notes: string | null;
|
|
34
|
+
createdAt: Date;
|
|
35
|
+
updatedAt: Date;
|
|
36
|
+
active: boolean;
|
|
37
|
+
code: string | null;
|
|
38
|
+
facilityId: string | null;
|
|
39
|
+
supplierId: string | null;
|
|
40
|
+
} | undefined>;
|
|
41
|
+
export declare function updateOperator(db: PostgresJsDatabase, id: string, data: UpdateGroundOperatorInput): Promise<{
|
|
42
|
+
id: string;
|
|
43
|
+
supplierId: string | null;
|
|
44
|
+
facilityId: string | null;
|
|
45
|
+
name: string;
|
|
46
|
+
code: string | null;
|
|
47
|
+
active: boolean;
|
|
48
|
+
notes: string | null;
|
|
49
|
+
createdAt: Date;
|
|
50
|
+
updatedAt: Date;
|
|
51
|
+
} | null>;
|
|
52
|
+
export declare function deleteOperator(db: PostgresJsDatabase, id: string): Promise<{
|
|
53
|
+
id: string;
|
|
54
|
+
} | null>;
|
|
55
|
+
export declare function listVehicles(db: PostgresJsDatabase, query: GroundVehicleListQuery): Promise<{
|
|
56
|
+
data: {
|
|
57
|
+
id: string;
|
|
58
|
+
resourceId: string;
|
|
59
|
+
operatorId: string | null;
|
|
60
|
+
category: "other" | "car" | "sedan" | "suv" | "van" | "minibus" | "bus" | "boat" | "train";
|
|
61
|
+
vehicleClass: "other" | "economy" | "standard" | "premium" | "luxury" | "accessible";
|
|
62
|
+
passengerCapacity: number | null;
|
|
63
|
+
checkedBagCapacity: number | null;
|
|
64
|
+
carryOnCapacity: number | null;
|
|
65
|
+
wheelchairCapacity: number | null;
|
|
66
|
+
childSeatCapacity: number | null;
|
|
67
|
+
isAccessible: boolean;
|
|
68
|
+
active: boolean;
|
|
69
|
+
notes: string | null;
|
|
70
|
+
createdAt: Date;
|
|
71
|
+
updatedAt: Date;
|
|
72
|
+
}[];
|
|
73
|
+
total: number;
|
|
74
|
+
limit: number;
|
|
75
|
+
offset: number;
|
|
76
|
+
}>;
|
|
77
|
+
export declare function getVehicleById(db: PostgresJsDatabase, id: string): Promise<{
|
|
78
|
+
id: string;
|
|
79
|
+
resourceId: string;
|
|
80
|
+
operatorId: string | null;
|
|
81
|
+
category: "other" | "car" | "sedan" | "suv" | "van" | "minibus" | "bus" | "boat" | "train";
|
|
82
|
+
vehicleClass: "other" | "economy" | "standard" | "premium" | "luxury" | "accessible";
|
|
83
|
+
passengerCapacity: number | null;
|
|
84
|
+
checkedBagCapacity: number | null;
|
|
85
|
+
carryOnCapacity: number | null;
|
|
86
|
+
wheelchairCapacity: number | null;
|
|
87
|
+
childSeatCapacity: number | null;
|
|
88
|
+
isAccessible: boolean;
|
|
89
|
+
active: boolean;
|
|
90
|
+
notes: string | null;
|
|
91
|
+
createdAt: Date;
|
|
92
|
+
updatedAt: Date;
|
|
93
|
+
} | null>;
|
|
94
|
+
export declare function createVehicle(db: PostgresJsDatabase, data: CreateGroundVehicleInput): Promise<{
|
|
95
|
+
id: string;
|
|
96
|
+
notes: string | null;
|
|
97
|
+
createdAt: Date;
|
|
98
|
+
updatedAt: Date;
|
|
99
|
+
active: boolean;
|
|
100
|
+
category: "other" | "car" | "sedan" | "suv" | "van" | "minibus" | "bus" | "boat" | "train";
|
|
101
|
+
resourceId: string;
|
|
102
|
+
operatorId: string | null;
|
|
103
|
+
vehicleClass: "other" | "economy" | "standard" | "premium" | "luxury" | "accessible";
|
|
104
|
+
passengerCapacity: number | null;
|
|
105
|
+
checkedBagCapacity: number | null;
|
|
106
|
+
carryOnCapacity: number | null;
|
|
107
|
+
wheelchairCapacity: number | null;
|
|
108
|
+
childSeatCapacity: number | null;
|
|
109
|
+
isAccessible: boolean;
|
|
110
|
+
} | undefined>;
|
|
111
|
+
export declare function updateVehicle(db: PostgresJsDatabase, id: string, data: UpdateGroundVehicleInput): Promise<{
|
|
112
|
+
id: string;
|
|
113
|
+
resourceId: string;
|
|
114
|
+
operatorId: string | null;
|
|
115
|
+
category: "other" | "car" | "sedan" | "suv" | "van" | "minibus" | "bus" | "boat" | "train";
|
|
116
|
+
vehicleClass: "other" | "economy" | "standard" | "premium" | "luxury" | "accessible";
|
|
117
|
+
passengerCapacity: number | null;
|
|
118
|
+
checkedBagCapacity: number | null;
|
|
119
|
+
carryOnCapacity: number | null;
|
|
120
|
+
wheelchairCapacity: number | null;
|
|
121
|
+
childSeatCapacity: number | null;
|
|
122
|
+
isAccessible: boolean;
|
|
123
|
+
active: boolean;
|
|
124
|
+
notes: string | null;
|
|
125
|
+
createdAt: Date;
|
|
126
|
+
updatedAt: Date;
|
|
127
|
+
} | null>;
|
|
128
|
+
export declare function deleteVehicle(db: PostgresJsDatabase, id: string): Promise<{
|
|
129
|
+
id: string;
|
|
130
|
+
} | null>;
|
|
131
|
+
export declare function listDrivers(db: PostgresJsDatabase, query: GroundDriverListQuery): Promise<{
|
|
132
|
+
data: {
|
|
133
|
+
id: string;
|
|
134
|
+
resourceId: string;
|
|
135
|
+
operatorId: string | null;
|
|
136
|
+
licenseNumber: string | null;
|
|
137
|
+
spokenLanguages: string[];
|
|
138
|
+
isGuide: boolean;
|
|
139
|
+
isMeetAndGreetCapable: boolean;
|
|
140
|
+
active: boolean;
|
|
141
|
+
notes: string | null;
|
|
142
|
+
createdAt: Date;
|
|
143
|
+
updatedAt: Date;
|
|
144
|
+
}[];
|
|
145
|
+
total: number;
|
|
146
|
+
limit: number;
|
|
147
|
+
offset: number;
|
|
148
|
+
}>;
|
|
149
|
+
export declare function getDriverById(db: PostgresJsDatabase, id: string): Promise<{
|
|
150
|
+
id: string;
|
|
151
|
+
resourceId: string;
|
|
152
|
+
operatorId: string | null;
|
|
153
|
+
licenseNumber: string | null;
|
|
154
|
+
spokenLanguages: string[];
|
|
155
|
+
isGuide: boolean;
|
|
156
|
+
isMeetAndGreetCapable: boolean;
|
|
157
|
+
active: boolean;
|
|
158
|
+
notes: string | null;
|
|
159
|
+
createdAt: Date;
|
|
160
|
+
updatedAt: Date;
|
|
161
|
+
} | null>;
|
|
162
|
+
export declare function createDriver(db: PostgresJsDatabase, data: CreateGroundDriverInput): Promise<{
|
|
163
|
+
id: string;
|
|
164
|
+
notes: string | null;
|
|
165
|
+
createdAt: Date;
|
|
166
|
+
updatedAt: Date;
|
|
167
|
+
active: boolean;
|
|
168
|
+
resourceId: string;
|
|
169
|
+
operatorId: string | null;
|
|
170
|
+
licenseNumber: string | null;
|
|
171
|
+
spokenLanguages: string[];
|
|
172
|
+
isGuide: boolean;
|
|
173
|
+
isMeetAndGreetCapable: boolean;
|
|
174
|
+
} | undefined>;
|
|
175
|
+
export declare function updateDriver(db: PostgresJsDatabase, id: string, data: UpdateGroundDriverInput): Promise<{
|
|
176
|
+
id: string;
|
|
177
|
+
resourceId: string;
|
|
178
|
+
operatorId: string | null;
|
|
179
|
+
licenseNumber: string | null;
|
|
180
|
+
spokenLanguages: string[];
|
|
181
|
+
isGuide: boolean;
|
|
182
|
+
isMeetAndGreetCapable: boolean;
|
|
183
|
+
active: boolean;
|
|
184
|
+
notes: string | null;
|
|
185
|
+
createdAt: Date;
|
|
186
|
+
updatedAt: Date;
|
|
187
|
+
} | null>;
|
|
188
|
+
export declare function deleteDriver(db: PostgresJsDatabase, id: string): Promise<{
|
|
189
|
+
id: string;
|
|
190
|
+
} | null>;
|
|
191
|
+
export declare function listDriverShifts(db: PostgresJsDatabase, query: GroundDriverShiftListQuery): Promise<{
|
|
192
|
+
data: {
|
|
193
|
+
id: string;
|
|
194
|
+
driverId: string;
|
|
195
|
+
operatorId: string | null;
|
|
196
|
+
facilityId: string | null;
|
|
197
|
+
startsAt: Date;
|
|
198
|
+
endsAt: Date;
|
|
199
|
+
status: "scheduled" | "completed" | "cancelled" | "available" | "on_duty";
|
|
200
|
+
notes: string | null;
|
|
201
|
+
metadata: Record<string, unknown> | null;
|
|
202
|
+
createdAt: Date;
|
|
203
|
+
updatedAt: Date;
|
|
204
|
+
}[];
|
|
205
|
+
total: number;
|
|
206
|
+
limit: number;
|
|
207
|
+
offset: number;
|
|
208
|
+
}>;
|
|
209
|
+
export declare function getDriverShiftById(db: PostgresJsDatabase, id: string): Promise<{
|
|
210
|
+
id: string;
|
|
211
|
+
driverId: string;
|
|
212
|
+
operatorId: string | null;
|
|
213
|
+
facilityId: string | null;
|
|
214
|
+
startsAt: Date;
|
|
215
|
+
endsAt: Date;
|
|
216
|
+
status: "scheduled" | "completed" | "cancelled" | "available" | "on_duty";
|
|
217
|
+
notes: string | null;
|
|
218
|
+
metadata: Record<string, unknown> | null;
|
|
219
|
+
createdAt: Date;
|
|
220
|
+
updatedAt: Date;
|
|
221
|
+
} | null>;
|
|
222
|
+
export declare function createDriverShift(db: PostgresJsDatabase, data: CreateGroundDriverShiftInput): Promise<{
|
|
223
|
+
id: string;
|
|
224
|
+
notes: string | null;
|
|
225
|
+
metadata: Record<string, unknown> | null;
|
|
226
|
+
createdAt: Date;
|
|
227
|
+
updatedAt: Date;
|
|
228
|
+
status: "scheduled" | "completed" | "cancelled" | "available" | "on_duty";
|
|
229
|
+
facilityId: string | null;
|
|
230
|
+
operatorId: string | null;
|
|
231
|
+
driverId: string;
|
|
232
|
+
startsAt: Date;
|
|
233
|
+
endsAt: Date;
|
|
234
|
+
} | undefined>;
|
|
235
|
+
export declare function updateDriverShift(db: PostgresJsDatabase, id: string, data: UpdateGroundDriverShiftInput): Promise<{
|
|
236
|
+
id: string;
|
|
237
|
+
driverId: string;
|
|
238
|
+
operatorId: string | null;
|
|
239
|
+
facilityId: string | null;
|
|
240
|
+
startsAt: Date;
|
|
241
|
+
endsAt: Date;
|
|
242
|
+
status: "scheduled" | "completed" | "cancelled" | "available" | "on_duty";
|
|
243
|
+
notes: string | null;
|
|
244
|
+
metadata: Record<string, unknown> | null;
|
|
245
|
+
createdAt: Date;
|
|
246
|
+
updatedAt: Date;
|
|
247
|
+
} | null>;
|
|
248
|
+
export declare function deleteDriverShift(db: PostgresJsDatabase, id: string): Promise<{
|
|
249
|
+
id: string;
|
|
250
|
+
} | null>;
|
|
251
|
+
//# sourceMappingURL=service-resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-resources.d.ts","sourceRoot":"","sources":["../src/service-resources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGjE,OAAO,KAAK,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAG5B,wBAAsB,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;GAmBzF;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;UAGvE;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,yBAAyB;;;;;;;;;;eAG3F;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,kBAAkB,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,yBAAyB;;;;;;;;;;UAQhC;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;UAMtE;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;;GAoBvF;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;UAGtE;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;eAGzF;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,kBAAkB,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;UAQ/B;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;UAMrE;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,qBAAqB;;;;;;;;;;;;;;;;;GAmBrF;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;UAGrE;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB;;;;;;;;;;;;eAGvF;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,kBAAkB,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,uBAAuB;;;;;;;;;;;;UAQ9B;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;UAMpE;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,0BAA0B;;;;;;;;;;;;;;;;;GAoB/F;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;UAO1E;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,kBAAkB,EACtB,IAAI,EAAE,4BAA4B;;;;;;;;;;;;eAWnC;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,kBAAkB,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,4BAA4B;;;;;;;;;;;;UAanC;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM;;UAMzE"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { and, asc, eq, sql } from "drizzle-orm";
|
|
2
|
+
import { groundDriverShifts, groundDrivers, groundOperators, groundVehicles } from "./schema.js";
|
|
3
|
+
import { paginate } from "./service-shared.js";
|
|
4
|
+
export async function listOperators(db, query) {
|
|
5
|
+
const conditions = [];
|
|
6
|
+
if (query.supplierId)
|
|
7
|
+
conditions.push(eq(groundOperators.supplierId, query.supplierId));
|
|
8
|
+
if (query.facilityId)
|
|
9
|
+
conditions.push(eq(groundOperators.facilityId, query.facilityId));
|
|
10
|
+
if (query.active !== undefined)
|
|
11
|
+
conditions.push(eq(groundOperators.active, query.active));
|
|
12
|
+
const where = conditions.length > 0 ? and(...conditions) : undefined;
|
|
13
|
+
return paginate(db
|
|
14
|
+
.select()
|
|
15
|
+
.from(groundOperators)
|
|
16
|
+
.where(where)
|
|
17
|
+
.limit(query.limit)
|
|
18
|
+
.offset(query.offset)
|
|
19
|
+
.orderBy(asc(groundOperators.name), asc(groundOperators.createdAt)), db.select({ count: sql `count(*)::int` }).from(groundOperators).where(where), query.limit, query.offset);
|
|
20
|
+
}
|
|
21
|
+
export async function getOperatorById(db, id) {
|
|
22
|
+
const [row] = await db.select().from(groundOperators).where(eq(groundOperators.id, id)).limit(1);
|
|
23
|
+
return row ?? null;
|
|
24
|
+
}
|
|
25
|
+
export async function createOperator(db, data) {
|
|
26
|
+
const [row] = await db.insert(groundOperators).values(data).returning();
|
|
27
|
+
return row;
|
|
28
|
+
}
|
|
29
|
+
export async function updateOperator(db, id, data) {
|
|
30
|
+
const [row] = await db
|
|
31
|
+
.update(groundOperators)
|
|
32
|
+
.set({ ...data, updatedAt: new Date() })
|
|
33
|
+
.where(eq(groundOperators.id, id))
|
|
34
|
+
.returning();
|
|
35
|
+
return row ?? null;
|
|
36
|
+
}
|
|
37
|
+
export async function deleteOperator(db, id) {
|
|
38
|
+
const [row] = await db
|
|
39
|
+
.delete(groundOperators)
|
|
40
|
+
.where(eq(groundOperators.id, id))
|
|
41
|
+
.returning({ id: groundOperators.id });
|
|
42
|
+
return row ?? null;
|
|
43
|
+
}
|
|
44
|
+
export async function listVehicles(db, query) {
|
|
45
|
+
const conditions = [];
|
|
46
|
+
if (query.resourceId)
|
|
47
|
+
conditions.push(eq(groundVehicles.resourceId, query.resourceId));
|
|
48
|
+
if (query.operatorId)
|
|
49
|
+
conditions.push(eq(groundVehicles.operatorId, query.operatorId));
|
|
50
|
+
if (query.category)
|
|
51
|
+
conditions.push(eq(groundVehicles.category, query.category));
|
|
52
|
+
if (query.active !== undefined)
|
|
53
|
+
conditions.push(eq(groundVehicles.active, query.active));
|
|
54
|
+
const where = conditions.length > 0 ? and(...conditions) : undefined;
|
|
55
|
+
return paginate(db
|
|
56
|
+
.select()
|
|
57
|
+
.from(groundVehicles)
|
|
58
|
+
.where(where)
|
|
59
|
+
.limit(query.limit)
|
|
60
|
+
.offset(query.offset)
|
|
61
|
+
.orderBy(asc(groundVehicles.createdAt)), db.select({ count: sql `count(*)::int` }).from(groundVehicles).where(where), query.limit, query.offset);
|
|
62
|
+
}
|
|
63
|
+
export async function getVehicleById(db, id) {
|
|
64
|
+
const [row] = await db.select().from(groundVehicles).where(eq(groundVehicles.id, id)).limit(1);
|
|
65
|
+
return row ?? null;
|
|
66
|
+
}
|
|
67
|
+
export async function createVehicle(db, data) {
|
|
68
|
+
const [row] = await db.insert(groundVehicles).values(data).returning();
|
|
69
|
+
return row;
|
|
70
|
+
}
|
|
71
|
+
export async function updateVehicle(db, id, data) {
|
|
72
|
+
const [row] = await db
|
|
73
|
+
.update(groundVehicles)
|
|
74
|
+
.set({ ...data, updatedAt: new Date() })
|
|
75
|
+
.where(eq(groundVehicles.id, id))
|
|
76
|
+
.returning();
|
|
77
|
+
return row ?? null;
|
|
78
|
+
}
|
|
79
|
+
export async function deleteVehicle(db, id) {
|
|
80
|
+
const [row] = await db
|
|
81
|
+
.delete(groundVehicles)
|
|
82
|
+
.where(eq(groundVehicles.id, id))
|
|
83
|
+
.returning({ id: groundVehicles.id });
|
|
84
|
+
return row ?? null;
|
|
85
|
+
}
|
|
86
|
+
export async function listDrivers(db, query) {
|
|
87
|
+
const conditions = [];
|
|
88
|
+
if (query.resourceId)
|
|
89
|
+
conditions.push(eq(groundDrivers.resourceId, query.resourceId));
|
|
90
|
+
if (query.operatorId)
|
|
91
|
+
conditions.push(eq(groundDrivers.operatorId, query.operatorId));
|
|
92
|
+
if (query.active !== undefined)
|
|
93
|
+
conditions.push(eq(groundDrivers.active, query.active));
|
|
94
|
+
const where = conditions.length > 0 ? and(...conditions) : undefined;
|
|
95
|
+
return paginate(db
|
|
96
|
+
.select()
|
|
97
|
+
.from(groundDrivers)
|
|
98
|
+
.where(where)
|
|
99
|
+
.limit(query.limit)
|
|
100
|
+
.offset(query.offset)
|
|
101
|
+
.orderBy(asc(groundDrivers.createdAt)), db.select({ count: sql `count(*)::int` }).from(groundDrivers).where(where), query.limit, query.offset);
|
|
102
|
+
}
|
|
103
|
+
export async function getDriverById(db, id) {
|
|
104
|
+
const [row] = await db.select().from(groundDrivers).where(eq(groundDrivers.id, id)).limit(1);
|
|
105
|
+
return row ?? null;
|
|
106
|
+
}
|
|
107
|
+
export async function createDriver(db, data) {
|
|
108
|
+
const [row] = await db.insert(groundDrivers).values(data).returning();
|
|
109
|
+
return row;
|
|
110
|
+
}
|
|
111
|
+
export async function updateDriver(db, id, data) {
|
|
112
|
+
const [row] = await db
|
|
113
|
+
.update(groundDrivers)
|
|
114
|
+
.set({ ...data, updatedAt: new Date() })
|
|
115
|
+
.where(eq(groundDrivers.id, id))
|
|
116
|
+
.returning();
|
|
117
|
+
return row ?? null;
|
|
118
|
+
}
|
|
119
|
+
export async function deleteDriver(db, id) {
|
|
120
|
+
const [row] = await db
|
|
121
|
+
.delete(groundDrivers)
|
|
122
|
+
.where(eq(groundDrivers.id, id))
|
|
123
|
+
.returning({ id: groundDrivers.id });
|
|
124
|
+
return row ?? null;
|
|
125
|
+
}
|
|
126
|
+
export async function listDriverShifts(db, query) {
|
|
127
|
+
const conditions = [];
|
|
128
|
+
if (query.driverId)
|
|
129
|
+
conditions.push(eq(groundDriverShifts.driverId, query.driverId));
|
|
130
|
+
if (query.operatorId)
|
|
131
|
+
conditions.push(eq(groundDriverShifts.operatorId, query.operatorId));
|
|
132
|
+
if (query.facilityId)
|
|
133
|
+
conditions.push(eq(groundDriverShifts.facilityId, query.facilityId));
|
|
134
|
+
if (query.status)
|
|
135
|
+
conditions.push(eq(groundDriverShifts.status, query.status));
|
|
136
|
+
const where = conditions.length ? and(...conditions) : undefined;
|
|
137
|
+
return paginate(db
|
|
138
|
+
.select()
|
|
139
|
+
.from(groundDriverShifts)
|
|
140
|
+
.where(where)
|
|
141
|
+
.limit(query.limit)
|
|
142
|
+
.offset(query.offset)
|
|
143
|
+
.orderBy(asc(groundDriverShifts.startsAt)), db.select({ count: sql `count(*)::int` }).from(groundDriverShifts).where(where), query.limit, query.offset);
|
|
144
|
+
}
|
|
145
|
+
export async function getDriverShiftById(db, id) {
|
|
146
|
+
const [row] = await db
|
|
147
|
+
.select()
|
|
148
|
+
.from(groundDriverShifts)
|
|
149
|
+
.where(eq(groundDriverShifts.id, id))
|
|
150
|
+
.limit(1);
|
|
151
|
+
return row ?? null;
|
|
152
|
+
}
|
|
153
|
+
export async function createDriverShift(db, data) {
|
|
154
|
+
const [row] = await db
|
|
155
|
+
.insert(groundDriverShifts)
|
|
156
|
+
.values({
|
|
157
|
+
...data,
|
|
158
|
+
startsAt: new Date(data.startsAt),
|
|
159
|
+
endsAt: new Date(data.endsAt),
|
|
160
|
+
})
|
|
161
|
+
.returning();
|
|
162
|
+
return row;
|
|
163
|
+
}
|
|
164
|
+
export async function updateDriverShift(db, id, data) {
|
|
165
|
+
const [row] = await db
|
|
166
|
+
.update(groundDriverShifts)
|
|
167
|
+
.set({
|
|
168
|
+
...data,
|
|
169
|
+
startsAt: data.startsAt ? new Date(data.startsAt) : undefined,
|
|
170
|
+
endsAt: data.endsAt ? new Date(data.endsAt) : undefined,
|
|
171
|
+
updatedAt: new Date(),
|
|
172
|
+
})
|
|
173
|
+
.where(eq(groundDriverShifts.id, id))
|
|
174
|
+
.returning();
|
|
175
|
+
return row ?? null;
|
|
176
|
+
}
|
|
177
|
+
export async function deleteDriverShift(db, id) {
|
|
178
|
+
const [row] = await db
|
|
179
|
+
.delete(groundDriverShifts)
|
|
180
|
+
.where(eq(groundDriverShifts.id, id))
|
|
181
|
+
.returning({ id: groundDriverShifts.id });
|
|
182
|
+
return row ?? null;
|
|
183
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { groundDispatchAssignmentListQuerySchema, groundDispatchCheckpointListQuerySchema, groundDispatchLegListQuerySchema, groundDispatchListQuerySchema, groundDispatchPassengerListQuerySchema, groundDriverListQuerySchema, groundDriverShiftListQuerySchema, groundExecutionEventListQuerySchema, groundOperatorListQuerySchema, groundServiceIncidentListQuerySchema, groundTransferPreferenceListQuerySchema, groundVehicleListQuerySchema, insertGroundDispatchAssignmentSchema, insertGroundDispatchCheckpointSchema, insertGroundDispatchLegSchema, insertGroundDispatchPassengerSchema, insertGroundDispatchSchema, insertGroundDriverSchema, insertGroundDriverShiftSchema, insertGroundExecutionEventSchema, insertGroundOperatorSchema, insertGroundServiceIncidentSchema, insertGroundTransferPreferenceSchema, insertGroundVehicleSchema, updateGroundDispatchAssignmentSchema, updateGroundDispatchCheckpointSchema, updateGroundDispatchLegSchema, updateGroundDispatchPassengerSchema, updateGroundDispatchSchema, updateGroundDriverSchema, updateGroundDriverShiftSchema, updateGroundExecutionEventSchema, updateGroundOperatorSchema, updateGroundServiceIncidentSchema, updateGroundTransferPreferenceSchema, updateGroundVehicleSchema } from "./validation.js";
|
|
3
|
+
export type GroundOperatorListQuery = z.infer<typeof groundOperatorListQuerySchema>;
|
|
4
|
+
export type CreateGroundOperatorInput = z.infer<typeof insertGroundOperatorSchema>;
|
|
5
|
+
export type UpdateGroundOperatorInput = z.infer<typeof updateGroundOperatorSchema>;
|
|
6
|
+
export type GroundVehicleListQuery = z.infer<typeof groundVehicleListQuerySchema>;
|
|
7
|
+
export type CreateGroundVehicleInput = z.infer<typeof insertGroundVehicleSchema>;
|
|
8
|
+
export type UpdateGroundVehicleInput = z.infer<typeof updateGroundVehicleSchema>;
|
|
9
|
+
export type GroundDriverListQuery = z.infer<typeof groundDriverListQuerySchema>;
|
|
10
|
+
export type CreateGroundDriverInput = z.infer<typeof insertGroundDriverSchema>;
|
|
11
|
+
export type UpdateGroundDriverInput = z.infer<typeof updateGroundDriverSchema>;
|
|
12
|
+
export type GroundTransferPreferenceListQuery = z.infer<typeof groundTransferPreferenceListQuerySchema>;
|
|
13
|
+
export type CreateGroundTransferPreferenceInput = z.infer<typeof insertGroundTransferPreferenceSchema>;
|
|
14
|
+
export type UpdateGroundTransferPreferenceInput = z.infer<typeof updateGroundTransferPreferenceSchema>;
|
|
15
|
+
export type GroundDispatchListQuery = z.infer<typeof groundDispatchListQuerySchema>;
|
|
16
|
+
export type CreateGroundDispatchInput = z.infer<typeof insertGroundDispatchSchema>;
|
|
17
|
+
export type UpdateGroundDispatchInput = z.infer<typeof updateGroundDispatchSchema>;
|
|
18
|
+
export type GroundExecutionEventListQuery = z.infer<typeof groundExecutionEventListQuerySchema>;
|
|
19
|
+
export type CreateGroundExecutionEventInput = z.infer<typeof insertGroundExecutionEventSchema>;
|
|
20
|
+
export type UpdateGroundExecutionEventInput = z.infer<typeof updateGroundExecutionEventSchema>;
|
|
21
|
+
export type GroundDispatchAssignmentListQuery = z.infer<typeof groundDispatchAssignmentListQuerySchema>;
|
|
22
|
+
export type CreateGroundDispatchAssignmentInput = z.infer<typeof insertGroundDispatchAssignmentSchema>;
|
|
23
|
+
export type UpdateGroundDispatchAssignmentInput = z.infer<typeof updateGroundDispatchAssignmentSchema>;
|
|
24
|
+
export type GroundDispatchLegListQuery = z.infer<typeof groundDispatchLegListQuerySchema>;
|
|
25
|
+
export type CreateGroundDispatchLegInput = z.infer<typeof insertGroundDispatchLegSchema>;
|
|
26
|
+
export type UpdateGroundDispatchLegInput = z.infer<typeof updateGroundDispatchLegSchema>;
|
|
27
|
+
export type GroundDispatchPassengerListQuery = z.infer<typeof groundDispatchPassengerListQuerySchema>;
|
|
28
|
+
export type CreateGroundDispatchPassengerInput = z.infer<typeof insertGroundDispatchPassengerSchema>;
|
|
29
|
+
export type UpdateGroundDispatchPassengerInput = z.infer<typeof updateGroundDispatchPassengerSchema>;
|
|
30
|
+
export type GroundDriverShiftListQuery = z.infer<typeof groundDriverShiftListQuerySchema>;
|
|
31
|
+
export type CreateGroundDriverShiftInput = z.infer<typeof insertGroundDriverShiftSchema>;
|
|
32
|
+
export type UpdateGroundDriverShiftInput = z.infer<typeof updateGroundDriverShiftSchema>;
|
|
33
|
+
export type GroundServiceIncidentListQuery = z.infer<typeof groundServiceIncidentListQuerySchema>;
|
|
34
|
+
export type CreateGroundServiceIncidentInput = z.infer<typeof insertGroundServiceIncidentSchema>;
|
|
35
|
+
export type UpdateGroundServiceIncidentInput = z.infer<typeof updateGroundServiceIncidentSchema>;
|
|
36
|
+
export type GroundDispatchCheckpointListQuery = z.infer<typeof groundDispatchCheckpointListQuerySchema>;
|
|
37
|
+
export type CreateGroundDispatchCheckpointInput = z.infer<typeof insertGroundDispatchCheckpointSchema>;
|
|
38
|
+
export type UpdateGroundDispatchCheckpointInput = z.infer<typeof updateGroundDispatchCheckpointSchema>;
|
|
39
|
+
export declare function paginate<T extends object>(rowsQuery: Promise<T[]>, countQuery: Promise<Array<{
|
|
40
|
+
count: number;
|
|
41
|
+
}>>, limit: number, offset: number): Promise<{
|
|
42
|
+
data: T[];
|
|
43
|
+
total: number;
|
|
44
|
+
limit: number;
|
|
45
|
+
offset: number;
|
|
46
|
+
}>;
|
|
47
|
+
export declare function toDateOrNull(value: string | null | undefined): Date | null;
|
|
48
|
+
//# sourceMappingURL=service-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-shared.d.ts","sourceRoot":"","sources":["../src/service-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export async function paginate(rowsQuery, countQuery, limit, offset) {
|
|
2
|
+
const [data, countResult] = await Promise.all([rowsQuery, countQuery]);
|
|
3
|
+
return { data, total: countResult[0]?.count ?? 0, limit, offset };
|
|
4
|
+
}
|
|
5
|
+
export function toDateOrNull(value) {
|
|
6
|
+
return value ? new Date(value) : null;
|
|
7
|
+
}
|