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

Method UpsertDatabase

backend/store/database.go:292–338  ·  view source on GitHub ↗

UpsertDatabase upserts a database.

(ctx context.Context, create *DatabaseMessage)

Source from the content-addressed store, hash-verified

290
291// UpsertDatabase upserts a database.
292func (s *Store) UpsertDatabase(ctx context.Context, create *DatabaseMessage) (*DatabaseMessage, error) {
293 metadataString, err := protojson.Marshal(create.Metadata)
294 if err != nil {
295 return nil, err
296 }
297
298 var environment *string
299 if create.EnvironmentID != nil && *create.EnvironmentID != "" {
300 environment = create.EnvironmentID
301 }
302
303 q := qb.Q().Space(`
304 INSERT INTO db (
305 instance,
306 project,
307 environment,
308 name,
309 deleted,
310 metadata
311 )
312 VALUES (?, ?, ?, ?, ?, ?)
313 ON CONFLICT (instance, name) DO UPDATE SET
314 project = EXCLUDED.project,
315 environment = EXCLUDED.environment,
316 name = EXCLUDED.name,
317 metadata = EXCLUDED.metadata`,
318 create.InstanceID,
319 create.ProjectID,
320 environment,
321 create.DatabaseName,
322 create.Deleted,
323 metadataString,
324 )
325
326 query, args, err := q.ToSQL()
327 if err != nil {
328 return nil, errors.Wrapf(err, "failed to build sql")
329 }
330
331 if _, err := s.GetDB().ExecContext(ctx, query, args...); err != nil {
332 return nil, err
333 }
334
335 // Invalidate and update the cache.
336 s.removeDatabaseCache(ctx, create.InstanceID, create.DatabaseName)
337 return s.GetDatabase(ctx, &FindDatabaseMessage{InstanceID: &create.InstanceID, DatabaseName: &create.DatabaseName, ShowDeleted: true})
338}
339
340// UpdateDatabase updates a database.
341func (s *Store) UpdateDatabase(ctx context.Context, patch *UpdateDatabaseMessage) (*DatabaseMessage, error) {

Callers 1

RunOnceMethod · 0.80

Calls 6

GetDBMethod · 0.95
removeDatabaseCacheMethod · 0.95
GetDatabaseMethod · 0.95
QFunction · 0.92
SpaceMethod · 0.80
ToSQLMethod · 0.80

Tested by

no test coverage detected