@@ -3,24 +3,22 @@ package connmongo
33import (
44 "context"
55 "fmt"
6- "slices"
7-
8- "go.mongodb.org/mongo-driver/v2/bson"
96
107 "github.com/PeerDB-io/peerdb/flow/generated/protos"
8+ shared_mongo "github.com/PeerDB-io/peerdb/flow/shared/mongo"
119)
1210
1311func (c * MongoConnector ) GetAllTables (ctx context.Context ) (* protos.AllTablesResponse , error ) {
1412 tableNames := make ([]string , 0 )
1513
16- dbNames , err := c . getAllDatabaseNames (ctx )
14+ dbNames , err := shared_mongo . GetDatabaseNames (ctx , c . client )
1715 if err != nil {
1816 return nil , fmt .Errorf ("failed to get databases: %w" , err )
1917 }
2018 for _ , dbName := range dbNames {
21- collNames , err := c . getCollectionNames (ctx , dbName )
19+ collNames , err := shared_mongo . GetCollectionNames (ctx , c . client , dbName )
2220 if err != nil {
23- return nil , err
21+ return nil , fmt . Errorf ( "failed to get collections: %w" , err )
2422 }
2523 for _ , collName := range collNames {
2624 tableNames = append (tableNames , fmt .Sprintf ("%s.%s" , dbName , collName ))
@@ -32,7 +30,7 @@ func (c *MongoConnector) GetAllTables(ctx context.Context) (*protos.AllTablesRes
3230}
3331
3432func (c * MongoConnector ) GetSchemas (ctx context.Context ) (* protos.PeerSchemasResponse , error ) {
35- dbNames , err := c . getAllDatabaseNames (ctx )
33+ dbNames , err := shared_mongo . GetDatabaseNames (ctx , c . client )
3634 if err != nil {
3735 return nil , fmt .Errorf ("failed to get databases: %w" , err )
3836 }
@@ -42,9 +40,9 @@ func (c *MongoConnector) GetSchemas(ctx context.Context) (*protos.PeerSchemasRes
4240}
4341
4442func (c * MongoConnector ) GetTablesInSchema (ctx context.Context , schema string , cdcEnabled bool ) (* protos.SchemaTablesResponse , error ) {
45- collectionNames , err := c . getCollectionNames (ctx , schema )
43+ collectionNames , err := shared_mongo . GetCollectionNames (ctx , c . client , schema )
4644 if err != nil {
47- return nil , err
45+ return nil , fmt . Errorf ( "failed to get collections: %w" , err )
4846 }
4947
5048 response := protos.SchemaTablesResponse {
@@ -69,39 +67,3 @@ func (c *MongoConnector) GetColumns(ctx context.Context, version uint32, schema
6967 Columns : []* protos.ColumnsItem {},
7068 }, nil
7169}
72-
73- func (c * MongoConnector ) getCollectionNames (ctx context.Context , databaseName string ) ([]string , error ) {
74- collectionNames , err := c .client .Database (databaseName ).ListCollectionNames (ctx , bson.M {
75- "name" : bson.M {
76- "$not" : bson.Regex {
77- Pattern : "^system\\ ." ,
78- },
79- },
80- "type" : bson.M {
81- "$ne" : "view" ,
82- },
83- })
84- if err != nil {
85- return nil , fmt .Errorf ("failed to get collections: %w" , err )
86- }
87- slices .Sort (collectionNames )
88- return collectionNames , nil
89- }
90-
91- // Get all database names, but excluding MongoDB's default databases
92- func (c * MongoConnector ) getAllDatabaseNames (ctx context.Context ) ([]string , error ) {
93- dbs , err := c .client .ListDatabaseNames (ctx , bson.M {
94- "name" : bson.M {
95- "$not" : bson.Regex {
96- Pattern : "^(admin|local|config)$" ,
97- },
98- },
99- })
100- if err != nil {
101- return nil , err
102- }
103- filteredDbNames := make ([]string , 0 , len (dbs ))
104- filteredDbNames = append (filteredDbNames , dbs ... )
105- slices .Sort (filteredDbNames )
106- return filteredDbNames , nil
107- }
0 commit comments