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

Method UpdateDatabase

backend/store/database.go:341–394  ·  view source on GitHub ↗

UpdateDatabase updates a database.

(ctx context.Context, patch *UpdateDatabaseMessage)

Source from the content-addressed store, hash-verified

339
340// UpdateDatabase updates a database.
341func (s *Store) UpdateDatabase(ctx context.Context, patch *UpdateDatabaseMessage) (*DatabaseMessage, error) {
342 set := qb.Q()
343
344 if v := patch.ProjectID; v != nil {
345 set.Comma("project = ?", *v)
346 }
347 if v := patch.EnvironmentID; v != nil {
348 if *v == "" {
349 set.Comma("environment = NULL")
350 } else {
351 set.Comma("environment = ?", *v)
352 }
353 }
354 if v := patch.Deleted; v != nil {
355 set.Comma("deleted = ?", *v)
356 }
357 if fs := patch.MetadataUpdates; len(fs) > 0 {
358 database, err := s.GetDatabase(ctx, &FindDatabaseMessage{
359 InstanceID: &patch.InstanceID,
360 DatabaseName: &patch.DatabaseName,
361 })
362 if err != nil {
363 return nil, errors.Wrapf(err, "failed to get database %q", common.FormatDatabase(patch.InstanceID, patch.DatabaseName))
364 }
365 md := proto.CloneOf(database.Metadata)
366 for _, f := range fs {
367 f(md)
368 }
369 metadataBytes, err := protojson.Marshal(md)
370 if err != nil {
371 return nil, err
372 }
373 set.Comma("metadata = ?", metadataBytes)
374 }
375
376 if set.Len() == 0 {
377 return nil, errors.New("no fields to update")
378 }
379
380 q := qb.Q().Space("UPDATE db SET ? WHERE instance = ? AND name = ?", set, patch.InstanceID, patch.DatabaseName)
381
382 query, args, err := q.ToSQL()
383 if err != nil {
384 return nil, errors.Wrapf(err, "failed to build sql")
385 }
386
387 if _, err := s.GetDB().ExecContext(ctx, query, args...); err != nil {
388 return nil, err
389 }
390
391 // Invalidate and update database cache.
392 s.removeDatabaseCache(ctx, patch.InstanceID, patch.DatabaseName)
393 return s.GetDatabase(ctx, &FindDatabaseMessage{InstanceID: &patch.InstanceID, DatabaseName: &patch.DatabaseName, ShowDeleted: true})
394}
395
396// BatchUpdateDatabases update databases in batch.
397func (s *Store) BatchUpdateDatabases(ctx context.Context, databases []*DatabaseMessage, update *BatchUpdateDatabases) error {

Callers

nothing calls this directly

Calls 10

GetDatabaseMethod · 0.95
GetDBMethod · 0.95
removeDatabaseCacheMethod · 0.95
QFunction · 0.92
FormatDatabaseFunction · 0.92
fFunction · 0.85
CommaMethod · 0.80
LenMethod · 0.80
SpaceMethod · 0.80
ToSQLMethod · 0.80

Tested by

no test coverage detected