@@ -5,6 +5,21 @@ import { DEFAULT_SYSTEM_SCHEMAS } from '../lib/constants'
5
5
import { Tables } from '../lib/interfaces'
6
6
import sqlTemplates = require( '../lib/sql' )
7
7
8
+ // const { PerformanceObserver, performance } = require('perf_hooks')
9
+
10
+ // const obs = new PerformanceObserver((items) => {
11
+ // console.log(items.getEntries()[0].duration)
12
+ // performance.clearMarks()
13
+ // })
14
+ // obs.observe({ entryTypes: ['measure'] })
15
+ // performance.measure('Start to Now')
16
+
17
+ // performance.mark('A')
18
+ // performance.measure('A to Now', 'A')
19
+
20
+ // performance.mark('B')
21
+ // performance.measure('A to B', 'A', 'B')
22
+
8
23
/**
9
24
* @param {string } [include_system_schemas=false] - Return system schemas as well as user schemas
10
25
*/
@@ -15,17 +30,28 @@ interface QueryParams {
15
30
const router = Router ( )
16
31
17
32
router . get ( '/' , async ( req , res ) => {
33
+ console . time ( 'Total: GET tables' )
18
34
try {
35
+ console . time ( '\n\nbuild sql' )
19
36
const sql = getTablesSql ( sqlTemplates )
37
+ console . timeEnd ( '\n\nbuild sql' )
38
+
39
+ console . time ( 'GET table data' )
20
40
const { data } = await RunQuery ( req . headers . pg , sql )
41
+ console . timeEnd ( 'GET table data' )
21
42
const query : QueryParams = req . query
43
+
44
+ console . time ( 'remove system tables' )
22
45
const include_system_schemas = query ?. include_system_schemas === 'true'
23
46
let payload : Tables . Table [ ] = data
24
47
if ( ! include_system_schemas ) payload = removeSystemSchemas ( data )
48
+ console . timeEnd ( 'remove system tables' )
25
49
return res . status ( 200 ) . json ( payload )
26
50
} catch ( error ) {
27
51
console . log ( 'throwing error' , error )
28
52
res . status ( 500 ) . json ( { error : 'Database error' , status : 500 } )
53
+ } finally {
54
+ console . timeEnd ( 'Total: GET tables' )
29
55
}
30
56
} )
31
57
@@ -122,12 +148,12 @@ router.delete('/:id', async (req, res) => {
122
148
const getTablesSql = ( sqlTemplates ) => {
123
149
const { columns, grants, policies, primary_keys, relationships, tables } = sqlTemplates
124
150
return `
125
- WITH tables AS ( ${ tables } ),
126
- columns AS ( ${ columns } ),
127
- grants AS ( ${ grants } ),
128
- policies AS ( ${ policies } ),
129
- primary_keys AS ( ${ primary_keys } ),
130
- relationships AS ( ${ relationships } )
151
+ WITH tables AS MATERIALIZED ( ${ tables } ),
152
+ columns AS MATERIALIZED ( ${ columns } ),
153
+ grants AS MATERIALIZED ( ${ grants } ),
154
+ policies AS MATERIALIZED ( ${ policies } ),
155
+ primary_keys AS MATERIALIZED ( ${ primary_keys } ),
156
+ relationships AS MATERIALIZED ( ${ relationships } )
131
157
SELECT
132
158
*,
133
159
${ coalesceRowsToArray ( 'columns' , 'SELECT * FROM columns WHERE columns.table_id = tables.id' ) } ,
0 commit comments