@@ -15,7 +15,7 @@ import dayjs from "dayjs";
15
15
import { useQuery , useQueryClient } from "@tanstack/react-query" ;
16
16
import { useCallback } from "react" ;
17
17
import { noPersistence } from "../../data/setup" ;
18
- import { Timestamp } from "@bufbuild/protobuf" ;
18
+ import { Duration , Timestamp } from "@bufbuild/protobuf" ;
19
19
20
20
const pageSize = 100 ;
21
21
const maxPages = 100 ; // safety limit if something goes wrong with pagination
@@ -154,6 +154,16 @@ const displayTime = (timestamp?: Timestamp) => {
154
154
return timestamp . toDate ( ) . toISOString ( ) ;
155
155
} ;
156
156
157
+ const renderDuration = ( duration ?: Duration ) : string => {
158
+ if ( ! duration ) {
159
+ return "" ;
160
+ }
161
+
162
+ let seconds = Number ( duration . seconds ) ;
163
+ seconds += duration . nanos / 1_000_000_000 ;
164
+ return seconds . toString ( 10 ) ;
165
+ } ;
166
+
157
167
export const transformSessionRecord = ( session : WorkspaceSession ) => {
158
168
const initializerType = session . workspace ?. spec ?. initializer ?. specs ;
159
169
const prebuildInitializer = initializerType ?. find ( ( i ) => i . spec . case === "prebuild" ) ?. spec . value as
@@ -190,6 +200,20 @@ export const transformSessionRecord = (session: WorkspaceSession) => {
190
200
timeout : session . workspace ?. spec ?. timeout ?. inactivity ?. seconds ,
191
201
editor : session . workspace ?. spec ?. editor ?. name ,
192
202
editorVersion : session . workspace ?. spec ?. editor ?. version , // indicates whether user selected the stable or latest editor release channel
203
+
204
+ // initializer metrics
205
+ contentInitGitDuration : renderDuration ( session . metrics ?. initializerMetrics ?. git ?. duration ) ,
206
+ contentInitGitSize : session . metrics ?. initializerMetrics ?. git ?. size ,
207
+ contentInitFileDownloadDuration : renderDuration ( session . metrics ?. initializerMetrics ?. fileDownload ?. duration ) ,
208
+ contentInitFileDownloadSize : session . metrics ?. initializerMetrics ?. fileDownload ?. size ,
209
+ contentInitSnapshotDuration : renderDuration ( session . metrics ?. initializerMetrics ?. snapshot ?. duration ) ,
210
+ contentInitSnapshotSize : session . metrics ?. initializerMetrics ?. snapshot ?. size ,
211
+ contentInitBackupDuration : renderDuration ( session . metrics ?. initializerMetrics ?. backup ?. duration ) ,
212
+ contentInitBackupSize : session . metrics ?. initializerMetrics ?. backup ?. size ,
213
+ contentInitPrebuildDuration : renderDuration ( session . metrics ?. initializerMetrics ?. prebuild ?. duration ) ,
214
+ contentInitPrebuildSize : session . metrics ?. initializerMetrics ?. prebuild ?. size ,
215
+ contentInitCompositeDuration : renderDuration ( session . metrics ?. initializerMetrics ?. composite ?. duration ) ,
216
+ contentInitCompositeSize : session . metrics ?. initializerMetrics ?. composite ?. size ,
193
217
} ;
194
218
195
219
return row ;
0 commit comments