@@ -4,102 +4,93 @@ import * as O from 'fp-ts/Option';
44import { DomainEvent } from '../../types' ;
55import { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3' ;
66import { 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' ;
139import { 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+
2011import { getAllEquipmentMinimal } from './equipment/get' ;
2112import { expandLastQuizResult } from './equipment/expand' ;
2213import { Dependencies } from '../../dependencies' ;
2314import { inspect } from 'node:util' ;
2415
25- const ROW_BATCH_SIZE = 200 ;
16+ // const ROW_BATCH_SIZE = 200;
2617
2718export 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
9889export 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
196191export 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' ) ;
0 commit comments