1
- import { literal } from 'pg-format'
2
- import { filterByList , coalesceRowsToArray } from './helpers.js'
1
+ import { filterByList , coalesceRowsToArray , filterByValue } from './helpers.js'
3
2
import { PostgresMetaResult , PostgresMaterializedView } from './types.js'
4
- import { MATERIALIZED_VIEWS_SQL , COLUMNS_SQL } from './sql/index.js'
3
+ import { MATERIALIZED_VIEWS_SQL } from './sql/materialized_views.sql.js'
4
+ import { COLUMNS_SQL } from './sql/columns.sql.js'
5
5
6
6
export default class PostgresMetaMaterializedViews {
7
7
query : ( sql : string ) => Promise < PostgresMetaResult < any > >
@@ -45,12 +45,12 @@ export default class PostgresMetaMaterializedViews {
45
45
name ?: string
46
46
schema ?: string
47
47
} ) : Promise < PostgresMetaResult < PostgresMaterializedView > > {
48
- const schemaFilter = schema ? filterByList ( [ schema ] , [ ] ) : undefined
49
48
if ( id ) {
50
- const sql = `${ generateEnrichedMaterializedViewsSql ( {
49
+ const idsFilter = filterByValue ( [ id ] )
50
+ const sql = generateEnrichedMaterializedViewsSql ( {
51
51
includeColumns : true ,
52
- schemaFilter ,
53
- } ) } where materialized_views.id = ${ literal ( id ) } ;`
52
+ idsFilter ,
53
+ } )
54
54
const { data, error } = await this . query ( sql )
55
55
if ( error ) {
56
56
return { data, error }
@@ -60,12 +60,11 @@ export default class PostgresMetaMaterializedViews {
60
60
return { data : data [ 0 ] , error }
61
61
}
62
62
} else if ( name ) {
63
- const sql = `${ generateEnrichedMaterializedViewsSql ( {
63
+ const materializedViewIdentifierFilter = filterByValue ( [ `${ schema } .${ name } ` ] )
64
+ const sql = generateEnrichedMaterializedViewsSql ( {
64
65
includeColumns : true ,
65
- schemaFilter,
66
- } ) } where materialized_views.name = ${ literal (
67
- name
68
- ) } and materialized_views.schema = ${ literal ( schema ) } ;`
66
+ materializedViewIdentifierFilter,
67
+ } )
69
68
const { data, error } = await this . query ( sql )
70
69
if ( error ) {
71
70
return { data, error }
@@ -86,16 +85,20 @@ export default class PostgresMetaMaterializedViews {
86
85
const generateEnrichedMaterializedViewsSql = ( {
87
86
includeColumns,
88
87
schemaFilter,
88
+ materializedViewIdentifierFilter,
89
+ idsFilter,
89
90
limit,
90
91
offset,
91
92
} : {
92
93
includeColumns : boolean
93
94
schemaFilter ?: string
95
+ materializedViewIdentifierFilter ?: string
96
+ idsFilter ?: string
94
97
limit ?: number
95
98
offset ?: number
96
99
} ) => `
97
- with materialized_views as (${ MATERIALIZED_VIEWS_SQL ( { schemaFilter, limit, offset } ) } )
98
- ${ includeColumns ? `, columns as (${ COLUMNS_SQL ( { schemaFilter, limit, offset } ) } ` : '' }
100
+ with materialized_views as (${ MATERIALIZED_VIEWS_SQL ( { schemaFilter, limit, offset, materializedViewIdentifierFilter , idsFilter } ) } )
101
+ ${ includeColumns ? `, columns as (${ COLUMNS_SQL ( { schemaFilter, limit, offset, tableIdentifierFilter : materializedViewIdentifierFilter , tableIdFilter : idsFilter } ) } ) ` : '' }
99
102
select
100
103
*
101
104
${
0 commit comments