8
8
} from "../../../datastore"
9
9
import { injectable } from "inversify"
10
10
import { isUndefined , omitBy } from "lodash"
11
+ import { Logger } from "../../../logging"
11
12
12
13
import { Filter , compileSQLFilter } from "../.."
13
14
@@ -31,7 +32,8 @@ export abstract class TableRepository<
31
32
protected store : SQLStore ,
32
33
protected tableName : string ,
33
34
protected queryFields : Array < keyof T > ,
34
- protected primaryKeyField : K
35
+ protected primaryKeyField : K ,
36
+ protected logger ?: Logger
35
37
) {
36
38
super ( )
37
39
@@ -114,6 +116,7 @@ export abstract class TableRepository<
114
116
} = { } ,
115
117
connection : SQLStore = this . store
116
118
) : Promise < Array < T > > {
119
+ let startTime = process . hrtime ( )
117
120
let [ filterQuery , filterParameters ] = compileSQLFilter ( filter )
118
121
let parameters = [ this . tableName , ...filterParameters ]
119
122
@@ -150,6 +153,8 @@ export abstract class TableRepository<
150
153
processedQuery ,
151
154
processedParameters
152
155
)
156
+
157
+ this . recordQueryTime ( processedQuery , startTime )
153
158
return results
154
159
}
155
160
@@ -208,4 +213,25 @@ export abstract class TableRepository<
208
213
async generateID ( ) : Promise < any > {
209
214
return undefined
210
215
}
216
+
217
+ protected recordQueryTime (
218
+ queryString : string ,
219
+ startTime : [ number , number ]
220
+ ) : void {
221
+ if ( this . logger !== undefined ) {
222
+ let runtime = process . hrtime ( startTime )
223
+
224
+ this . logger . debug (
225
+ `[REPOSITORY - QUERY - DIAGNOSTICS] ${
226
+ this . tableName
227
+ } query complete - ${ runtime [ 0 ] } s and ${ runtime [ 1 ] /
228
+ 1000000 } ms`,
229
+ {
230
+ query : queryString ,
231
+ seconds : runtime [ 0 ] ,
232
+ milliseconds : runtime [ 1 ] / 1000000 ,
233
+ }
234
+ )
235
+ }
236
+ }
211
237
}
0 commit comments