Skip to content

Commit b65ddea

Browse files
committed
Strip back to just metadata
1 parent 29459a7 commit b65ddea

File tree

3 files changed

+163
-168
lines changed

3 files changed

+163
-168
lines changed

src/read-models/shared-state/async-apply-external-event-sources.ts

Lines changed: 156 additions & 161 deletions
Original file line numberDiff line numberDiff line change
@@ -4,102 +4,93 @@ import * as O from 'fp-ts/Option';
44
import {DomainEvent} from '../../types';
55
import {BetterSQLite3Database} from 'drizzle-orm/better-sqlite3';
66
import {EpochTimestampMilliseconds, MinimalEquipment} from './return-types';
7-
import {
8-
columnBoundsRequired,
9-
extractGoogleSheetData,
10-
shouldPullFromSheet,
11-
} from '../../training-sheets/google';
12-
import {constructEvent, EventOfType} from '../../types/domain-event';
7+
8+
import {EventOfType} from '../../types/domain-event';
139
import {GoogleHelpers} from '../../init-dependencies/google/pull_sheet_data';
14-
import {
15-
extractGoogleSheetMetadata,
16-
GoogleSheetMetadata,
17-
MAX_COLUMN_INDEX,
18-
} from '../../training-sheets/extract-metadata';
19-
import {getChunkIndexes} from '../../util';
10+
2011
import {getAllEquipmentMinimal} from './equipment/get';
2112
import {expandLastQuizResult} from './equipment/expand';
2213
import {Dependencies} from '../../dependencies';
2314
import {inspect} from 'node:util';
2415

25-
const ROW_BATCH_SIZE = 200;
16+
// const ROW_BATCH_SIZE = 200;
2617

2718
export type EquipmentWithLastQuizResult = MinimalEquipment & {
2819
lastQuizResult: O.Option<EpochTimestampMilliseconds>;
2920
};
3021

31-
const pullNewEquipmentQuizResultsForSheet = async (
32-
logger: Logger,
33-
googleHelpers: GoogleHelpers,
34-
equipment: EquipmentWithLastQuizResult,
35-
trainingSheetId: string,
36-
sheet: GoogleSheetMetadata,
37-
timezone: string,
38-
updateState: (event: EventOfType<'EquipmentTrainingQuizResult'>) => void
39-
): Promise<void> => {
40-
logger = logger.child({sheet_name: sheet.name});
41-
logger.info('Processing sheet');
42-
if (trainingSheetId === '1i1vJmCO8_Dkpbv-izOSkffoAeJTNrJsmAV5hD0w2ADw') {
43-
// Trying to identify the source of a rust panic.
44-
logger.warn(
45-
'Skipping sheet because the training sheet has been temporarly disabled'
46-
);
47-
return;
48-
}
49-
for (const [rowStart, rowEnd] of getChunkIndexes(
50-
2, // 1-indexed and first row is headers.
51-
sheet.rowCount,
52-
ROW_BATCH_SIZE
53-
)) {
54-
logger.debug('Pulling data for sheet rows %s to %s', rowStart, rowEnd);
22+
// const pullNewEquipmentQuizResultsForSheet = async (
23+
// logger: Logger,
24+
// googleHelpers: GoogleHelpers,
25+
// equipment: EquipmentWithLastQuizResult,
26+
// trainingSheetId: string,
27+
// sheet: GoogleSheetMetadata,
28+
// timezone: string,
29+
// updateState: (event: EventOfType<'EquipmentTrainingQuizResult'>) => void
30+
// ): Promise<void> => {
31+
// logger = logger.child({sheet_name: sheet.name});
32+
// logger.info('Processing sheet');
33+
// if (trainingSheetId === '1i1vJmCO8_Dkpbv-izOSkffoAeJTNrJsmAV5hD0w2ADw') {
34+
// // Trying to identify the source of a rust panic.
35+
// logger.warn(
36+
// 'Skipping sheet because the training sheet has been temporarly disabled'
37+
// );
38+
// return;
39+
// }
40+
// for (const [rowStart, rowEnd] of getChunkIndexes(
41+
// 2, // 1-indexed and first row is headers.
42+
// sheet.rowCount,
43+
// ROW_BATCH_SIZE
44+
// )) {
45+
// logger.debug('Pulling data for sheet rows %s to %s', rowStart, rowEnd);
5546

56-
const [minCol, maxCol] = columnBoundsRequired(sheet);
47+
// const [minCol, maxCol] = columnBoundsRequired(sheet);
5748

58-
const data = await googleHelpers.pullGoogleSheetData(
59-
logger,
60-
trainingSheetId,
61-
sheet.name,
62-
rowStart,
63-
rowEnd,
64-
minCol,
65-
maxCol
66-
)();
67-
if (E.isLeft(data)) {
68-
logger.error(
69-
data.left,
70-
'Failed to pull data for sheet rows %s to %s, skipping rest of sheet',
71-
rowStart,
72-
rowEnd
73-
);
74-
return;
75-
}
76-
logger.info('Pulled data from google');
77-
logger.info(inspect(data));
78-
logger.info('About to extract google sheet data');
79-
const result = extractGoogleSheetData(
80-
logger,
81-
trainingSheetId,
82-
equipment.id,
83-
sheet,
84-
timezone,
85-
equipment.lastQuizResult
86-
)(data.right);
87-
logger.info('Google sheet data extracted, result:');
88-
logger.info(inspect(result));
89-
logger.info('Updating data with the extracted data');
90-
if (O.isSome(result)) {
91-
result.value.forEach(updateState);
92-
}
93-
return; // Early return.
94-
}
95-
logger.info('Finished processing sheet');
96-
};
49+
// const data = await googleHelpers.pullGoogleSheetData(
50+
// logger,
51+
// trainingSheetId,
52+
// sheet.name,
53+
// rowStart,
54+
// rowEnd,
55+
// minCol,
56+
// maxCol
57+
// )();
58+
// if (E.isLeft(data)) {
59+
// logger.error(
60+
// data.left,
61+
// 'Failed to pull data for sheet rows %s to %s, skipping rest of sheet',
62+
// rowStart,
63+
// rowEnd
64+
// );
65+
// return;
66+
// }
67+
// logger.info('Pulled data from google');
68+
// logger.info(inspect(data));
69+
// logger.info('About to extract google sheet data');
70+
// const result = extractGoogleSheetData(
71+
// logger,
72+
// trainingSheetId,
73+
// equipment.id,
74+
// sheet,
75+
// timezone,
76+
// equipment.lastQuizResult
77+
// )(data.right);
78+
// logger.info('Google sheet data extracted, result:');
79+
// logger.info(inspect(result));
80+
// logger.info('Updating data with the extracted data');
81+
// if (O.isSome(result)) {
82+
// result.value.forEach(updateState);
83+
// }
84+
// return; // Early return.
85+
// }
86+
// logger.info('Finished processing sheet');
87+
// };
9788

9889
export const pullNewEquipmentQuizResults = async (
9990
logger: Logger,
10091
googleHelpers: GoogleHelpers,
10192
equipment: EquipmentWithLastQuizResult,
102-
updateState: (
93+
_updateState: (
10394
event:
10495
| EventOfType<'EquipmentTrainingQuizSync'>
10596
| EventOfType<'EquipmentTrainingQuizResult'>
@@ -130,67 +121,71 @@ export const pullNewEquipmentQuizResults = async (
130121
return;
131122
}
132123

133-
const sheets: GoogleSheetMetadata[] = [];
134-
for (const sheet of initialMeta.right.sheets) {
135-
if (!shouldPullFromSheet(sheet)) {
136-
logger.warn(
137-
"Skipping sheet '%s' as doesn't match expected for form responses",
138-
sheet.properties.title
139-
);
140-
continue;
141-
}
124+
logger.info('Initial meta data');
125+
logger.info(inspect(initialMeta));
126+
return;
142127

143-
const firstRowData = await googleHelpers.pullGoogleSheetData(
144-
logger,
145-
trainingSheetId,
146-
sheet.properties.title,
147-
1,
148-
1,
149-
0,
150-
MAX_COLUMN_INDEX
151-
)();
152-
if (E.isLeft(firstRowData)) {
153-
logger.warn(
154-
'Failed to get google sheet first row data for sheet %s, skipping',
155-
sheet.properties.title
156-
);
157-
continue;
158-
}
128+
// const sheets: GoogleSheetMetadata[] = [];
129+
// for (const sheet of initialMeta.right.sheets) {
130+
// if (!shouldPullFromSheet(sheet)) {
131+
// logger.warn(
132+
// "Skipping sheet '%s' as doesn't match expected for form responses",
133+
// sheet.properties.title
134+
// );
135+
// continue;
136+
// }
159137

160-
const meta = extractGoogleSheetMetadata(logger)(sheet, firstRowData.right);
161-
if (O.isNone(meta)) {
162-
continue;
163-
}
138+
// const firstRowData = await googleHelpers.pullGoogleSheetData(
139+
// logger,
140+
// trainingSheetId,
141+
// sheet.properties.title,
142+
// 1,
143+
// 1,
144+
// 0,
145+
// MAX_COLUMN_INDEX
146+
// )();
147+
// if (E.isLeft(firstRowData)) {
148+
// logger.warn(
149+
// 'Failed to get google sheet first row data for sheet %s, skipping',
150+
// sheet.properties.title
151+
// );
152+
// continue;
153+
// }
164154

165-
logger.info(
166-
'Got metadata for sheet: %s: %o',
167-
sheet.properties.title,
168-
meta.value
169-
);
170-
sheets.push(meta.value);
171-
}
155+
// const meta = extractGoogleSheetMetadata(logger)(sheet, firstRowData.right);
156+
// if (O.isNone(meta)) {
157+
// continue;
158+
// }
172159

173-
for (const sheet of sheets) {
174-
await pullNewEquipmentQuizResultsForSheet(
175-
logger,
176-
googleHelpers,
177-
equipment,
178-
trainingSheetId,
179-
sheet,
180-
initialMeta.right.properties.timeZone,
181-
updateState
182-
);
183-
}
160+
// logger.info(
161+
// 'Got metadata for sheet: %s: %o',
162+
// sheet.properties.title,
163+
// meta.value
164+
// );
165+
// sheets.push(meta.value);
166+
// }
184167

185-
logger.info(
186-
'Finished pulling equipment quiz results for all sheets, generating quiz sync event...'
187-
);
168+
// for (const sheet of sheets) {
169+
// await pullNewEquipmentQuizResultsForSheet(
170+
// logger,
171+
// googleHelpers,
172+
// equipment,
173+
// trainingSheetId,
174+
// sheet,
175+
// initialMeta.right.properties.timeZone,
176+
// updateState
177+
// );
178+
// }
188179

189-
updateState(
190-
constructEvent('EquipmentTrainingQuizSync')({
191-
equipmentId: equipment.id,
192-
})
193-
);
180+
// logger.info(
181+
// 'Finished pulling equipment quiz results for all sheets, generating quiz sync event...'
182+
// );
183+
184+
// updateState(
185+
// constructEvent('EquipmentTrainingQuizSync')({
186+
// equipmentId: equipment.id,
187+
// })
188+
// );
194189
};
195190

196191
export const asyncApplyExternalEventSources = (
@@ -199,7 +194,7 @@ export const asyncApplyExternalEventSources = (
199194
googleHelpers: O.Option<GoogleHelpers>,
200195
updateState: (event: DomainEvent) => void,
201196
googleRateLimitMs: number,
202-
cacheSheetData: Dependencies['cacheSheetData']
197+
_cacheSheetData: Dependencies['cacheSheetData']
203198
) => {
204199
return () => async () => {
205200
logger.info('Applying external event sources...');
@@ -224,43 +219,43 @@ export const asyncApplyExternalEventSources = (
224219
'Triggering event update from google training sheets for %s...',
225220
equipment.name
226221
);
227-
const events: (
228-
| EventOfType<'EquipmentTrainingQuizSync'>
229-
| EventOfType<'EquipmentTrainingQuizResult'>
230-
)[] = [];
231-
const collectEvents = (
232-
event:
233-
| EventOfType<'EquipmentTrainingQuizSync'>
234-
| EventOfType<'EquipmentTrainingQuizResult'>
235-
) => {
236-
logger.info('Collected event %o', event);
237-
events.push(event);
238-
// updateState(event);
239-
};
222+
// const events: (
223+
// | EventOfType<'EquipmentTrainingQuizSync'>
224+
// | EventOfType<'EquipmentTrainingQuizResult'>
225+
// )[] = [];
226+
// const collectEvents = (
227+
// event:
228+
// | EventOfType<'EquipmentTrainingQuizSync'>
229+
// | EventOfType<'EquipmentTrainingQuizResult'>
230+
// ) => {
231+
// logger.info('Collected event %o', event);
232+
// events.push(event);
233+
// // updateState(event);
234+
// };
240235

241236
await pullNewEquipmentQuizResults(
242237
logger,
243238
googleHelpers.value,
244239
expandLastQuizResult(currentState)(equipment),
245-
collectEvents
240+
updateState
246241
);
247242
logger.info(
248243
'Finished pulling events from google training sheet for %s, caching...',
249244
equipment.name
250245
);
251-
const x = await cacheSheetData(
252-
new Date(),
253-
equipment.trainingSheetId.value,
254-
events
255-
)();
256-
if (E.isLeft(x)) {
257-
logger.error(
258-
'Failed to cache training sheet data for %s training sheet id %s, due to: %s',
259-
equipment.name,
260-
equipment.trainingSheetId,
261-
x.left.message
262-
);
263-
}
246+
// const x = await cacheSheetData(
247+
// new Date(),
248+
// equipment.trainingSheetId.value,
249+
// events
250+
// )();
251+
// if (E.isLeft(x)) {
252+
// logger.error(
253+
// 'Failed to cache training sheet data for %s training sheet id %s, due to: %s',
254+
// equipment.name,
255+
// equipment.trainingSheetId,
256+
// x.left.message
257+
// );
258+
// }
264259
}
265260
}
266261
logger.info('Finished applying external event sources');

src/training-sheets/extract-metadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export interface GoogleSheetMetadata {
2525
};
2626
}
2727

28-
export const MAX_COLUMN_INDEX = 25;
28+
// export const MAX_COLUMN_INDEX = 25;
2929
// Doesn't support beyond 26 columns but actually thats fine for the current data.
3030
export const columnIndexToLetter = (index: ColumnIndex): ColumnLetter =>
3131
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.charAt(index);

0 commit comments

Comments
 (0)