@@ -146,7 +146,7 @@ export const fromDatabase = async (
146146 defaultsQuery ,
147147 ] ) ;
148148
149- const { other } = namespaces . reduce < { system : Namespace [ ] ; other : Namespace [ ] } > (
149+ const { other : filteredNamespaces } = namespaces . reduce < { system : Namespace [ ] ; other : Namespace [ ] } > (
150150 ( acc , it ) => {
151151 if ( isSystemNamespace ( it . name ) ) {
152152 acc . system . push ( it ) ;
@@ -158,7 +158,6 @@ export const fromDatabase = async (
158158 { system : [ ] , other : [ ] } ,
159159 ) ;
160160
161- const filteredNamespaces = other . filter ( ( it ) => filter ( { type : 'schema' , name : it . name } ) ) ;
162161 const filteredNamespacesStringForSQL = filteredNamespaces . map ( ( ns ) => `'${ ns . name } '` ) . join ( ',' ) ;
163162
164163 schemas . push ( ...filteredNamespaces . map < Schema > ( ( it ) => ( { entityType : 'schemas' , name : it . name } ) ) ) ;
@@ -209,19 +208,13 @@ export const fromDatabase = async (
209208 : [ ] as TableListItem [ ] ;
210209
211210 const viewsList = tablesList . filter ( ( it ) => {
212- if ( ( it . kind === 'v' || it . kind === 'm' ) ) {
213- return filter ( { type : 'table' , schema : it . schema , name : it . name } ) ;
214- }
215- return false ;
211+ it . schema = trimChar ( it . schema , '"' ) ; // when camel case name e.x. mySchema -> it gets wrapped to "mySchema"
212+ return it . kind === 'v' || it . kind === 'm' ;
216213 } ) ;
217214
218215 const filteredTables = tablesList . filter ( ( it ) => {
219216 it . schema = trimChar ( it . schema , '"' ) ; // when camel case name e.x. mySchema -> it gets wrapped to "mySchema"
220-
221- if ( ( it . kind === 'r' || it . kind === 'p' ) ) {
222- return filter ( { type : 'table' , schema : it . schema , name : it . name } ) ;
223- }
224- return false ;
217+ return it . kind === 'r' || it . kind === 'p' ;
225218 } ) ;
226219
227220 const filteredTableIds = filteredTables . map ( ( it ) => it . oid ) ;
@@ -681,10 +674,7 @@ export const fromDatabase = async (
681674
682675 progressCallback ( 'enums' , Object . keys ( groupedEnums ) . length , 'done' ) ;
683676
684- // TODO: drizzle link
685- const filteredRoles = rolesList . filter ( ( x ) => filter ( { type : 'role' , name : x . rolname } ) ) ;
686-
687- for ( const dbRole of filteredRoles ) {
677+ for ( const dbRole of rolesList ) {
688678 roles . push ( {
689679 entityType : 'roles' ,
690680 name : dbRole . rolname ,
@@ -1205,22 +1195,39 @@ export const fromDatabase = async (
12051195 progressCallback ( 'checks' , checksCount , 'done' ) ;
12061196 progressCallback ( 'views' , viewsCount , 'done' ) ;
12071197
1198+ const resultSchemas = schemas . filter ( ( x ) => filter ( { type : 'schema' , name : x . name } ) ) ;
1199+ const resultTables = tables . filter ( ( x ) => filter ( { type : 'table' , schema : x . schema , name : x . name } ) ) ;
1200+ const resultEnums = enums . filter ( ( x ) => resultSchemas . some ( ( s ) => s . name === x . schema ) ) ;
1201+ const resultColumns = columns . filter ( ( x ) => resultTables . some ( ( t ) => t . schema === x . schema && t . name === x . table ) ) ;
1202+ const resultIndexes = indexes . filter ( ( x ) => resultTables . some ( ( t ) => t . schema === x . schema && t . name === x . table ) ) ;
1203+ const resultPKs = pks . filter ( ( x ) => resultTables . some ( ( t ) => t . schema === x . schema && t . name === x . table ) ) ;
1204+ const resultFKs = fks . filter ( ( x ) => resultTables . some ( ( t ) => t . schema === x . schema && t . name === x . table ) ) ;
1205+ const resultUniques = uniques . filter ( ( x ) => resultTables . some ( ( t ) => t . schema === x . schema && t . name === x . table ) ) ;
1206+ const resultChecks = checks . filter ( ( x ) => resultTables . some ( ( t ) => t . schema === x . schema && t . name === x . table ) ) ;
1207+ const resultSequences = sequences . filter ( ( x ) => resultSchemas . some ( ( t ) => t . name === x . schema ) ) ;
1208+ // TODO: drizzle link
1209+ const resultRoles = roles . filter ( ( x ) => filter ( { type : 'role' , name : x . name } ) ) ;
1210+ const resultViews = views . filter ( ( x ) => filter ( { type : 'table' , schema : x . schema , name : x . name } ) ) ;
1211+ const resultViewColumns = viewColumns . filter ( ( x ) =>
1212+ resultViews . some ( ( v ) => v . schema === x . schema && v . name === x . view )
1213+ ) ;
1214+
12081215 return {
1209- schemas,
1210- tables,
1211- enums,
1212- columns,
1213- indexes,
1214- pks,
1215- fks,
1216- uniques,
1217- checks,
1218- sequences,
1219- roles,
1216+ schemas : resultSchemas ,
1217+ tables : resultTables ,
1218+ enums : resultEnums ,
1219+ columns : resultColumns ,
1220+ indexes : resultIndexes ,
1221+ pks : resultPKs ,
1222+ fks : resultFKs ,
1223+ uniques : resultUniques ,
1224+ checks : resultChecks ,
1225+ sequences : resultSequences ,
1226+ roles : resultRoles ,
12201227 privileges,
12211228 policies,
1222- views,
1223- viewColumns,
1229+ views : resultViews ,
1230+ viewColumns : resultViewColumns ,
12241231 } satisfies InterimSchema ;
12251232} ;
12261233
0 commit comments