MCPcopy Index your code
hub / github.com/bytebase/bytebase / SyncDBSchema

Method SyncDBSchema

backend/plugin/db/sqlite/sync.go:50–97  ·  view source on GitHub ↗

SyncDBSchema syncs a single database schema.

(ctx context.Context)

Source from the content-addressed store, hash-verified

48
49// SyncDBSchema syncs a single database schema.
50func (d *Driver) SyncDBSchema(ctx context.Context) (*storepb.DatabaseSchemaMetadata, error) {
51 databases, err := d.getDatabases()
52 if err != nil {
53 return nil, err
54 }
55
56 schemaMetadata := &storepb.SchemaMetadata{
57 Name: "",
58 }
59 databaseMetadata := &storepb.DatabaseSchemaMetadata{
60 Name: d.databaseName,
61 Schemas: []*storepb.SchemaMetadata{schemaMetadata},
62 }
63 found := false
64 for _, database := range databases {
65 if database == d.databaseName {
66 found = true
67 break
68 }
69 }
70 if !found {
71 return nil, common.Errorf(common.NotFound, "database %q not found", d.databaseName)
72 }
73
74 txn, err := d.db.BeginTx(ctx, &sql.TxOptions{ReadOnly: true})
75 if err != nil {
76 return nil, err
77 }
78 defer txn.Rollback()
79
80 tables, err := getTables(txn)
81 if err != nil {
82 return nil, err
83 }
84 schemaMetadata.Tables = tables
85
86 views, err := getViews(txn)
87 if err != nil {
88 return nil, err
89 }
90 schemaMetadata.Views = views
91
92 if err := txn.Commit(); err != nil {
93 return nil, err
94 }
95
96 return databaseMetadata, nil
97}
98
99// getTables gets all tables of a database.
100func getTables(txn *sql.Tx) ([]*storepb.TableMetadata, error) {

Callers

nothing calls this directly

Implementers 15

MockDriverbackend/plugin/advisor/utils_for_tests
Driverbackend/plugin/db/bigquery/bigquery.go
Driverbackend/plugin/db/mongodb/mongodb.go
Driverbackend/plugin/db/trino/trino.go
Driverbackend/plugin/db/redshift/redshift.go
Driverbackend/plugin/db/oracle/oracle.go
Driverbackend/plugin/db/dynamodb/dynamodb.go
Driverbackend/plugin/db/cosmosdb/cosmosdb.go
Driverbackend/plugin/db/spanner/spanner.go
Driverbackend/plugin/db/mssql/mssql.go
Driverbackend/plugin/db/mysql/mysql.go
Driverbackend/plugin/db/pg/pg.go

Calls 4

getDatabasesMethod · 0.95
ErrorfFunction · 0.92
getTablesFunction · 0.70
getViewsFunction · 0.70

Tested by

no test coverage detected