Skip to content

Commit 260655d

Browse files
committed
Make order of operations requirement (equipment then get cached events) even clearer
1 parent 747b954 commit 260655d

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

src/index.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,16 @@ void (async () => {
104104
elapsedNs / (1000 * 1000)
105105
)
106106
)(
107-
loadCachedSheetData(
108-
deps.getCachedSheetData,
109-
deps.logger,
110-
deps.sharedReadModel
107+
Promise.all(
108+
deps.sharedReadModel.equipment
109+
.getAll()
110+
.map(
111+
loadCachedSheetData(
112+
deps.getCachedSheetData,
113+
deps.logger,
114+
deps.sharedReadModel.updateState
115+
)
116+
)
111117
)
112118
);
113119
await deps.sharedReadModel.asyncApplyExternalEventSources()();

src/load-cached-sheet-data.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ import {Logger} from 'pino';
22
import * as E from 'fp-ts/Either';
33
import * as O from 'fp-ts/Option';
44
import {Dependencies} from './dependencies';
5-
import {SharedReadModel} from './read-models/shared-state';
5+
import {Equipment} from './read-models/shared-state/return-types';
66

7-
export const loadCachedSheetData = async (
8-
getCachedSheetData: Dependencies['getCachedSheetData'],
9-
logger: Logger,
10-
sharedReadModel: SharedReadModel
11-
) => {
12-
// We only load cached training events for equipment we know about.
13-
logger = logger.child({section: 'loadCachedSheetData'});
14-
for (const equipment of sharedReadModel.equipment.getAll()) {
7+
export const loadCachedSheetData =
8+
(
9+
getCachedSheetData: Dependencies['getCachedSheetData'],
10+
logger: Logger,
11+
updateState: Dependencies['sharedReadModel']['updateState']
12+
) =>
13+
async (equipment: Equipment) => {
14+
// We only load cached training events for equipment we know about.
15+
logger = logger.child({section: 'loadCachedSheetData'});
1516
const equipmentLogger = logger.child({
1617
equipment_name: equipment.name,
1718
equipment_id: equipment.id,
@@ -26,7 +27,7 @@ export const loadCachedSheetData = async (
2627
equipmentLogger.info(
2728
'Equipment has no training sheet id - not loading any cached data'
2829
);
29-
continue;
30+
return;
3031
}
3132
equipmentLogger.info('Loading cached sheet data for sheet');
3233
const cachedSheetData = await getCachedSheetData(
@@ -42,7 +43,7 @@ export const loadCachedSheetData = async (
4243
} else {
4344
if (O.isNone(cachedSheetData.right)) {
4445
equipmentLogger.info('No cached events found');
45-
continue;
46+
return;
4647
}
4748
const loadedData = cachedSheetData.right.value;
4849
const sheetDataLogger = equipmentLogger.child({
@@ -66,10 +67,9 @@ export const loadCachedSheetData = async (
6667
cachedEvent.equipmentId
6768
);
6869
} else {
69-
sharedReadModel.updateState(cachedEvent);
70+
updateState(cachedEvent);
7071
}
7172
}
7273
}
7374
}
74-
}
75-
};
75+
};

src/util.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ export const fieldIsUUID =
6666
E.isRight(tt.UUID.decode(obj[key]));
6767

6868
export const timeAsync =
69-
(callback: (nanoseconds: number) => void) => async (fn: Promise<void>) => {
69+
(callback: (nanoseconds: number) => void) =>
70+
async (fn: PromiseLike<void | void[]>) => {
7071
const start = process.hrtime.bigint();
7172
const result = await fn;
7273
// Realistically we aren't going to be have elapsed periods big enough that this conversion back to number is problematic.

0 commit comments

Comments
 (0)