GetDatabase gets a database.
(ctx context.Context, find *FindDatabaseMessage)
| 98 | |
| 99 | // GetDatabase gets a database. |
| 100 | func (s *Store) GetDatabase(ctx context.Context, find *FindDatabaseMessage) (*DatabaseMessage, error) { |
| 101 | if find.InstanceID != nil && find.DatabaseName != nil { |
| 102 | if v, ok := s.databaseCache.Get(getDatabaseCacheKey(find.Workspace, *find.InstanceID, *find.DatabaseName)); ok && s.enableCache { |
| 103 | return v, nil |
| 104 | } |
| 105 | } |
| 106 | |
| 107 | databases, err := s.ListDatabases(ctx, find) |
| 108 | if err != nil { |
| 109 | return nil, err |
| 110 | } |
| 111 | if len(databases) == 0 { |
| 112 | return nil, nil |
| 113 | } |
| 114 | if len(databases) > 1 { |
| 115 | return nil, &common.Error{Code: common.Conflict, Err: errors.Errorf("found %d database with filter %+v, expect 1", len(databases), find)} |
| 116 | } |
| 117 | database := databases[0] |
| 118 | |
| 119 | s.databaseCache.Add(getDatabaseCacheKey(find.Workspace, database.InstanceID, database.DatabaseName), database) |
| 120 | return database, nil |
| 121 | } |
| 122 | |
| 123 | // ListDatabases lists all databases. |
| 124 | func (s *Store) ListDatabases(ctx context.Context, find *FindDatabaseMessage) ([]*DatabaseMessage, error) { |
no test coverage detected