Skip to content

Commit 8f7e72d

Browse files
committed
trying to bugfix ride table api
1 parent b3cc3e2 commit 8f7e72d

1 file changed

Lines changed: 45 additions & 21 deletions

File tree

server/src/router/common.ts

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,62 @@ import { Location } from '../models/location';
77
import { Driver } from '../models/driver';
88

99
// Helper: batch fetch locations, riders, drivers and return maps keyed by id
10+
// This is written defensively so that if any batchGet fails in a particular
11+
// environment (e.g., missing tables or limited IAM permissions in production),
12+
// we degrade gracefully by logging the error and continuing with empty maps
13+
// instead of failing the entire scan.
1014
async function buildEntityMapsFromSets(
1115
locationIds: Set<string>,
1216
riderIds: Set<string>,
1317
driverIds: Set<string>
1418
) {
15-
const [locationsArr, ridersArr, driversArr] = await Promise.all([
16-
locationIds.size
17-
? Location.batchGet(Array.from(locationIds).map((id) => ({ id })))
18-
: Promise.resolve([]),
19-
riderIds.size
20-
? Rider.batchGet(Array.from(riderIds).map((id) => ({ id })))
21-
: Promise.resolve([]),
22-
driverIds.size
23-
? Driver.batchGet(Array.from(driverIds).map((id) => ({ id })))
24-
: Promise.resolve([]),
25-
]);
26-
2719
const locationMap = new Map<string, any>();
2820
const riderMap = new Map<string, any>();
2921
const driverMap = new Map<string, any>();
3022

31-
for (const l of locationsArr as any[]) {
32-
const j = l && l.toJSON ? l.toJSON() : l;
33-
if (j && j.id) locationMap.set(j.id, j);
23+
// Fetch locations
24+
if (locationIds.size) {
25+
try {
26+
const locationsArr = (await Location.batchGet(
27+
Array.from(locationIds).map((id) => ({ id }))
28+
)) as any[];
29+
for (const l of locationsArr) {
30+
const j = l && l.toJSON ? l.toJSON() : l;
31+
if (j && j.id) locationMap.set(j.id, j);
32+
}
33+
} catch (err) {
34+
console.error('Error batch fetching locations in buildEntityMapsFromSets:', err);
35+
}
3436
}
35-
for (const r of ridersArr as any[]) {
36-
const j = r && r.toJSON ? r.toJSON() : r;
37-
if (j && j.id) riderMap.set(j.id, j);
37+
38+
// Fetch riders
39+
if (riderIds.size) {
40+
try {
41+
const ridersArr = (await Rider.batchGet(
42+
Array.from(riderIds).map((id) => ({ id }))
43+
)) as any[];
44+
for (const r of ridersArr) {
45+
const j = r && r.toJSON ? r.toJSON() : r;
46+
if (j && j.id) riderMap.set(j.id, j);
47+
}
48+
} catch (err) {
49+
console.error('Error batch fetching riders in buildEntityMapsFromSets:', err);
50+
}
3851
}
39-
for (const d of driversArr as any[]) {
40-
const j = d && d.toJSON ? d.toJSON() : d;
41-
if (j && j.id) driverMap.set(j.id, j);
52+
53+
// Fetch drivers
54+
if (driverIds.size) {
55+
try {
56+
const driversArr = (await Driver.batchGet(
57+
Array.from(driverIds).map((id) => ({ id }))
58+
)) as any[];
59+
for (const d of driversArr) {
60+
const j = d && d.toJSON ? d.toJSON() : d;
61+
if (j && j.id) driverMap.set(j.id, j);
62+
}
63+
} catch (err) {
64+
console.error('Error batch fetching drivers in buildEntityMapsFromSets:', err);
65+
}
4266
}
4367

4468
return { locationMap, riderMap, driverMap };

0 commit comments

Comments
 (0)