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

Method GetSetting

backend/api/v1/setting_service.go:82–125  ·  view source on GitHub ↗

GetSetting gets the setting by name.

(ctx context.Context, request *connect.Request[v1pb.GetSettingRequest])

Source from the content-addressed store, hash-verified

80
81// GetSetting gets the setting by name.
82func (s *SettingService) GetSetting(ctx context.Context, request *connect.Request[v1pb.GetSettingRequest]) (*connect.Response[v1pb.Setting], error) {
83 settingName, err := common.GetSettingName(request.Msg.Name)
84 if err != nil {
85 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("setting name is invalid: %v", err))
86 }
87 if settingName == "" {
88 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("setting name is empty"))
89 }
90
91 storeSettingName, err := convertStringToSettingName(settingName)
92 if err != nil {
93 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("invalid setting name: %v", err))
94 }
95 if s.isSettingDisallowed(storeSettingName) {
96 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("setting is not available"))
97 }
98
99 var perm permission.Permission
100 switch storeSettingName {
101 case storepb.SettingName_ENVIRONMENT:
102 perm = permission.EnvironmentSettingsGet
103 case storepb.SettingName_WORKSPACE_PROFILE:
104 perm = permission.WorkspaceProfileSettingsGet
105 default:
106 perm = permission.SettingsGet
107 }
108 if err := s.checkSettingPermission(ctx, request, perm); err != nil {
109 return nil, err
110 }
111
112 setting, err := s.store.GetSetting(ctx, common.GetWorkspaceIDFromContext(ctx), storeSettingName)
113 if err != nil {
114 return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to get setting: %v", err))
115 }
116 if setting == nil {
117 return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("setting %s not found", settingName))
118 }
119 // Only return whitelisted setting.
120 settingMessage, err := convertToSettingMessage(setting)
121 if err != nil {
122 return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to convert setting message: %v", err))
123 }
124 return connect.NewResponse(settingMessage), nil
125}
126
127// SetSetting set the setting by name.
128func (s *SettingService) UpdateSetting(ctx context.Context, request *connect.Request[v1pb.UpdateSettingRequest]) (*connect.Response[v1pb.Setting], error) {

Callers

nothing calls this directly

Calls 8

isSettingDisallowedMethod · 0.95
GetSettingNameFunction · 0.92
convertToSettingMessageFunction · 0.85
ErrorfMethod · 0.80
GetSettingMethod · 0.65

Tested by

no test coverage detected