@@ -15,7 +15,7 @@ import dayjs from "dayjs";
1515import { useQuery , useQueryClient } from "@tanstack/react-query" ;
1616import { useCallback } from "react" ;
1717import { noPersistence } from "../../data/setup" ;
18- import { Timestamp } from "@bufbuild/protobuf" ;
18+ import { Duration , Timestamp } from "@bufbuild/protobuf" ;
1919
2020const pageSize = 100 ;
2121const maxPages = 100 ; // safety limit if something goes wrong with pagination
@@ -154,6 +154,16 @@ const displayTime = (timestamp?: Timestamp) => {
154154 return timestamp . toDate ( ) . toISOString ( ) ;
155155} ;
156156
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+
157167export const transformSessionRecord = ( session : WorkspaceSession ) => {
158168 const initializerType = session . workspace ?. spec ?. initializer ?. specs ;
159169 const prebuildInitializer = initializerType ?. find ( ( i ) => i . spec . case === "prebuild" ) ?. spec . value as
@@ -190,6 +200,20 @@ export const transformSessionRecord = (session: WorkspaceSession) => {
190200 timeout : session . workspace ?. spec ?. timeout ?. inactivity ?. seconds ,
191201 editor : session . workspace ?. spec ?. editor ?. name ,
192202 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 ,
193217 } ;
194218
195219 return row ;
0 commit comments