@@ -155,14 +155,78 @@ const getTablesSql = (sqlTemplates) => {
155
155
) }
156
156
FROM tables;` . trim ( )
157
157
}
158
- const selectSingleSql = ( sqlTemplates , id : number ) => {
159
- const { tables } = sqlTemplates
160
- return `${ tables } and c.oid = ${ id } ;` . trim ( )
158
+ const selectSingleSql = ( sqlTemplates : { [ key : string ] : string } , id : number ) => {
159
+ const { columns, grants, policies, primary_keys, relationships, tables } = sqlTemplates
160
+ return `
161
+ WITH tables AS ( ${ tables } AND c.oid = ${ id } ),
162
+ columns AS ( ${ columns } ),
163
+ grants AS ( ${ grants } ),
164
+ policies AS ( ${ policies } ),
165
+ primary_keys AS ( ${ primary_keys } ),
166
+ relationships AS ( ${ relationships } )
167
+ SELECT
168
+ *,
169
+ ${ coalesceRowsToArray ( 'columns' , 'SELECT * FROM columns WHERE columns.table_id = tables.id' ) } ,
170
+ ${ coalesceRowsToArray ( 'grants' , 'SELECT * FROM grants WHERE grants.table_id = tables.id' ) } ,
171
+ ${ coalesceRowsToArray (
172
+ 'policies' ,
173
+ 'SELECT * FROM policies WHERE policies.table_id = tables.id'
174
+ ) } ,
175
+ ${ coalesceRowsToArray (
176
+ 'primary_keys' ,
177
+ 'SELECT * FROM primary_keys WHERE primary_keys.table_id = tables.id'
178
+ ) } ,
179
+ ${ coalesceRowsToArray (
180
+ 'relationships' ,
181
+ `SELECT
182
+ *
183
+ FROM
184
+ relationships
185
+ WHERE
186
+ (relationships.source_schema = tables.schema AND relationships.source_table_name = tables.name)
187
+ OR (relationships.target_table_schema = tables.schema AND relationships.target_table_name = tables.name)`
188
+ ) }
189
+ FROM tables;` . trim ( )
161
190
}
162
- const selectSingleByName = ( sqlTemplates , schema : string , name : string ) => {
163
- const { tables } = sqlTemplates
164
- return `${ tables } and table_schema = '${ schema } ' and table_name = '${ name } ';` . trim ( )
191
+
192
+ const selectSingleByName = (
193
+ sqlTemplates : { [ key : string ] : string } ,
194
+ schema : string ,
195
+ name : string
196
+ ) => {
197
+ const { columns, grants, policies, primary_keys, relationships, tables } = sqlTemplates
198
+ return `
199
+ WITH tables AS ( ${ tables } AND table_schema = '${ schema } ' AND table_name = '${ name } ' ),
200
+ columns AS ( ${ columns } ),
201
+ grants AS ( ${ grants } ),
202
+ policies AS ( ${ policies } ),
203
+ primary_keys AS ( ${ primary_keys } ),
204
+ relationships AS ( ${ relationships } )
205
+ SELECT
206
+ *,
207
+ ${ coalesceRowsToArray ( 'columns' , 'SELECT * FROM columns WHERE columns.table_id = tables.id' ) } ,
208
+ ${ coalesceRowsToArray ( 'grants' , 'SELECT * FROM grants WHERE grants.table_id = tables.id' ) } ,
209
+ ${ coalesceRowsToArray (
210
+ 'policies' ,
211
+ 'SELECT * FROM policies WHERE policies.table_id = tables.id'
212
+ ) } ,
213
+ ${ coalesceRowsToArray (
214
+ 'primary_keys' ,
215
+ 'SELECT * FROM primary_keys WHERE primary_keys.table_id = tables.id'
216
+ ) } ,
217
+ ${ coalesceRowsToArray (
218
+ 'relationships' ,
219
+ `SELECT
220
+ *
221
+ FROM
222
+ relationships
223
+ WHERE
224
+ (relationships.source_schema = tables.schema AND relationships.source_table_name = tables.name)
225
+ OR (relationships.target_table_schema = tables.schema AND relationships.target_table_name = tables.name)`
226
+ ) }
227
+ FROM tables;` . trim ( )
165
228
}
229
+
166
230
const createTableSqlize = ( {
167
231
name,
168
232
schema = 'public' ,
0 commit comments