File tree Expand file tree Collapse file tree 3 files changed +10
-19
lines changed Expand file tree Collapse file tree 3 files changed +10
-19
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ WITH roles AS (${
35
35
} )
36
36
SELECT
37
37
*,
38
- ${ coalesceRowsToArray ( 'grants' , 'SELECT * FROM grants WHERE grants.grantee = roles.name' ) }
38
+ ${ coalesceRowsToArray ( 'grants' , 'grants.grantee = roles.name' ) }
39
39
FROM
40
40
roles`
41
41
if ( limit ) {
Original file line number Diff line number Diff line change @@ -211,21 +211,13 @@ WITH tables AS (${tablesSql}),
211
211
relationships AS (${ relationshipsSql } )
212
212
SELECT
213
213
*,
214
- ${ coalesceRowsToArray ( 'columns' , 'SELECT * FROM columns WHERE columns.table_id = tables.id' ) } ,
215
- ${ coalesceRowsToArray ( 'grants' , 'SELECT * FROM grants WHERE grants.table_id = tables.id' ) } ,
216
- ${ coalesceRowsToArray ( 'policies' , 'SELECT * FROM policies WHERE policies.table_id = tables.id' ) } ,
217
- ${ coalesceRowsToArray (
218
- 'primary_keys' ,
219
- 'SELECT * FROM primary_keys WHERE primary_keys.table_id = tables.id'
220
- ) } ,
214
+ ${ coalesceRowsToArray ( 'columns' , 'columns.table_id = tables.id' ) } ,
215
+ ${ coalesceRowsToArray ( 'grants' , 'grants.table_id = tables.id' ) } ,
216
+ ${ coalesceRowsToArray ( 'policies' , 'policies.table_id = tables.id' ) } ,
217
+ ${ coalesceRowsToArray ( 'primary_keys' , 'primary_keys.table_id = tables.id' ) } ,
221
218
${ coalesceRowsToArray (
222
219
'relationships' ,
223
- `SELECT
224
- *
225
- FROM
226
- relationships
227
- WHERE
228
- (relationships.source_schema = tables.schema AND relationships.source_table_name = tables.name)
220
+ `(relationships.source_schema = tables.schema AND relationships.source_table_name = tables.name)
229
221
OR (relationships.target_table_schema = tables.schema AND relationships.target_table_name = tables.name)`
230
222
) }
231
223
FROM tables`
Original file line number Diff line number Diff line change 1
- export const coalesceRowsToArray = ( source : string , joinQuery : string ) => {
2
- // Note that array_to_json(array_agg(row_to_json())) seems to perform better than json_agg
1
+ export const coalesceRowsToArray = ( source : string , filter : string ) => {
3
2
return `
4
3
COALESCE(
5
4
(
6
5
SELECT
7
- array_to_json( array_agg(row_to_json(${ source } )))
6
+ array_agg(row_to_json(${ source } )) FILTER (WHERE ${ filter } )
8
7
FROM
9
- ( ${ joinQuery } ) ${ source }
8
+ ${ source }
10
9
),
11
- '[] '
10
+ '{} '
12
11
) AS ${ source } `
13
12
}
You can’t perform that action at this time.
0 commit comments