MCPcopy Create free account
hub / github.com/bytebase/bytebase / ListSettings

Method ListSettings

backend/store/setting.go:259–319  ·  view source on GitHub ↗

ListSettings returns a list of settings.

(ctx context.Context, find *FindSettingMessage)

Source from the content-addressed store, hash-verified

257
258// ListSettings returns a list of settings.
259func (s *Store) ListSettings(ctx context.Context, find *FindSettingMessage) ([]*SettingMessage, error) {
260 q := qb.Q().Space(`
261 SELECT
262 name,
263 workspace,
264 value
265 FROM setting
266 WHERE workspace = ?
267 `, find.Workspace)
268
269 if find.Name != nil {
270 q.And("name = ?", find.Name.String())
271 }
272 query, args, err := q.ToSQL()
273 if err != nil {
274 return nil, errors.Wrapf(err, "failed to build sql")
275 }
276 rows, err := s.GetDB().QueryContext(ctx, query, args...)
277 if err != nil {
278 return nil, err
279 }
280 defer rows.Close()
281
282 var settingMessages []*SettingMessage
283 for rows.Next() {
284 var settingMessage SettingMessage
285 var nameString string
286 var valueString string
287 if err := rows.Scan(
288 &nameString,
289 &settingMessage.Workspace,
290 &valueString,
291 ); err != nil {
292 return nil, err
293 }
294 value, ok := storepb.SettingName_value[nameString]
295 if !ok {
296 return nil, errors.Errorf("invalid setting name string: %s", nameString)
297 }
298 settingMessage.Name = storepb.SettingName(value)
299
300 msg, err := getSettingMessage(settingMessage.Name)
301 if err != nil {
302 return nil, err
303 }
304 if err := common.ProtojsonUnmarshaler.Unmarshal([]byte(valueString), msg); err != nil {
305 return nil, err
306 }
307 settingMessage.Value = msg
308
309 settingMessages = append(settingMessages, &settingMessage)
310 }
311 if err := rows.Err(); err != nil {
312 return nil, err
313 }
314
315 for _, setting := range settingMessages {
316 s.settingCache.Add(getSettingCacheKey(setting.Workspace, setting.Name), setting)

Callers 1

GetSettingMethod · 0.95

Calls 14

GetDBMethod · 0.95
QFunction · 0.92
getSettingMessageFunction · 0.85
getSettingCacheKeyFunction · 0.85
SpaceMethod · 0.80
AndMethod · 0.80
ToSQLMethod · 0.80
QueryContextMethod · 0.80
ScanMethod · 0.80
ErrorfMethod · 0.80
UnmarshalMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected