@@ -5,8 +5,10 @@ import (
55 "fmt"
66 "net/http"
77 "net/url"
8+ "strings"
89
910 v1pb "github.com/bytebase/bytebase/proto/generated-go/v1"
11+ "google.golang.org/protobuf/encoding/protojson"
1012)
1113
1214// GetDatabase gets the database by the database full name.
@@ -64,6 +66,32 @@ func (c *client) UpdateDatabase(ctx context.Context, patch *v1pb.Database, updat
6466 return & res , nil
6567}
6668
69+ // BatchUpdateDatabases batch updates databases.
70+ func (c * client ) BatchUpdateDatabases (ctx context.Context , request * v1pb.BatchUpdateDatabasesRequest ) (* v1pb.BatchUpdateDatabasesResponse , error ) {
71+ requestURL := fmt .Sprintf ("%s/%s/instances/-/databases:batchUpdate" , c .url , c .version )
72+ payload , err := protojson .Marshal (request )
73+ if err != nil {
74+ return nil , err
75+ }
76+
77+ req , err := http .NewRequestWithContext (ctx , "POST" , requestURL , strings .NewReader (string (payload )))
78+ if err != nil {
79+ return nil , err
80+ }
81+
82+ body , err := c .doRequest (req )
83+ if err != nil {
84+ return nil , err
85+ }
86+
87+ var res v1pb.BatchUpdateDatabasesResponse
88+ if err := ProtojsonUnmarshaler .Unmarshal (body , & res ); err != nil {
89+ return nil , err
90+ }
91+
92+ return & res , nil
93+ }
94+
6795// GetDatabaseCatalog gets the database catalog by the database full name.
6896func (c * client ) GetDatabaseCatalog (ctx context.Context , databaseName string ) (* v1pb.DatabaseCatalog , error ) {
6997 body , err := c .getResource (ctx , fmt .Sprintf ("%s/catalog" , databaseName ))
0 commit comments