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

Method UpdateIdentityProvider

backend/store/idp.go:221–282  ·  view source on GitHub ↗

UpdateIdentityProvider updates an identity provider.

(ctx context.Context, patch *UpdateIdentityProviderMessage)

Source from the content-addressed store, hash-verified

219
220// UpdateIdentityProvider updates an identity provider.
221func (s *Store) UpdateIdentityProvider(ctx context.Context, patch *UpdateIdentityProviderMessage) (*IdentityProviderMessage, error) {
222 set := qb.Q()
223 if v := patch.Title; v != nil {
224 set.Comma("name = ?", *v)
225 }
226 if v := patch.Domain; v != nil {
227 set.Comma("domain = ?", *v)
228 }
229 if v := patch.Config; v != nil {
230 configBytes, err := getConfigBytes(v)
231 if err != nil {
232 return nil, errors.Wrap(err, "failed to marshal identity provider config")
233 }
234 set.Comma("config = ?", string(configBytes))
235 }
236 if set.Len() == 0 {
237 return nil, errors.New("no fields to update")
238 }
239
240 q := qb.Q().Space(`
241 UPDATE idp
242 SET ?
243 WHERE resource_id = ?
244 RETURNING
245 resource_id,
246 workspace,
247 name,
248 domain,
249 type,
250 config
251 `, set, patch.ResourceID)
252
253 query, args, err := q.ToSQL()
254 if err != nil {
255 return nil, errors.Wrapf(err, "failed to build sql")
256 }
257
258 identityProvider := &IdentityProviderMessage{}
259 var workspace sql.NullString
260 var identityProviderType string
261 var identityProviderConfig string
262 if err := s.GetDB().QueryRowContext(ctx, query, args...).Scan(
263 &identityProvider.ResourceID,
264 &workspace,
265 &identityProvider.Title,
266 &identityProvider.Domain,
267 &identityProviderType,
268 &identityProviderConfig,
269 ); err != nil {
270 if err == sql.ErrNoRows {
271 return nil, &common.Error{Code: common.NotFound, Err: errors.Errorf("identity provider ID not found: %s", patch.ResourceID)}
272 }
273 return nil, err
274 }
275 if workspace.Valid {
276 identityProvider.Workspace = workspace.String
277 }
278

Callers

nothing calls this directly

Calls 11

GetDBMethod · 0.95
QFunction · 0.92
getConfigBytesFunction · 0.85
CommaMethod · 0.80
LenMethod · 0.80
SpaceMethod · 0.80
ToSQLMethod · 0.80
ScanMethod · 0.80
ErrorfMethod · 0.80

Tested by

no test coverage detected