@@ -5,6 +5,21 @@ import { DEFAULT_SYSTEM_SCHEMAS } from '../lib/constants'
55import { Tables } from '../lib/interfaces'
66import sqlTemplates = require( '../lib/sql' )
77
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+
823/**
924 * @param {string } [include_system_schemas=false] - Return system schemas as well as user schemas
1025 */
@@ -15,17 +30,28 @@ interface QueryParams {
1530const router = Router ( )
1631
1732router . get ( '/' , async ( req , res ) => {
33+ console . time ( 'Total: GET tables' )
1834 try {
35+ console . time ( '\n\nbuild sql' )
1936 const sql = getTablesSql ( sqlTemplates )
37+ console . timeEnd ( '\n\nbuild sql' )
38+
39+ console . time ( 'GET table data' )
2040 const { data } = await RunQuery ( req . headers . pg , sql )
41+ console . timeEnd ( 'GET table data' )
2142 const query : QueryParams = req . query
43+
44+ console . time ( 'remove system tables' )
2245 const include_system_schemas = query ?. include_system_schemas === 'true'
2346 let payload : Tables . Table [ ] = data
2447 if ( ! include_system_schemas ) payload = removeSystemSchemas ( data )
48+ console . timeEnd ( 'remove system tables' )
2549 return res . status ( 200 ) . json ( payload )
2650 } catch ( error ) {
2751 console . log ( 'throwing error' , error )
2852 res . status ( 500 ) . json ( { error : 'Database error' , status : 500 } )
53+ } finally {
54+ console . timeEnd ( 'Total: GET tables' )
2955 }
3056} )
3157
@@ -122,12 +148,12 @@ router.delete('/:id', async (req, res) => {
122148const getTablesSql = ( sqlTemplates ) => {
123149 const { columns, grants, policies, primary_keys, relationships, tables } = sqlTemplates
124150 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 } )
131157 SELECT
132158 *,
133159 ${ coalesceRowsToArray ( 'columns' , 'SELECT * FROM columns WHERE columns.table_id = tables.id' ) } ,
0 commit comments