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

Method UpdateWorkloadIdentity

backend/store/workload_identity.go:233–285  ·  view source on GitHub ↗

UpdateWorkloadIdentity updates a workload identity.

(ctx context.Context, wi *WorkloadIdentityMessage, patch *UpdateWorkloadIdentityMessage)

Source from the content-addressed store, hash-verified

231
232// UpdateWorkloadIdentity updates a workload identity.
233func (s *Store) UpdateWorkloadIdentity(ctx context.Context, wi *WorkloadIdentityMessage, patch *UpdateWorkloadIdentityMessage) (*WorkloadIdentityMessage, error) {
234 set := qb.Q()
235 if v := patch.Delete; v != nil {
236 set.Comma("deleted = ?", *v)
237 }
238 if v := patch.Name; v != nil {
239 set.Comma("name = ?", *v)
240 }
241 if v := patch.Config; v != nil {
242 configBytes, err := protojson.Marshal(v)
243 if err != nil {
244 return nil, err
245 }
246 set.Comma("config = ?", configBytes)
247 }
248
249 if set.Len() == 0 {
250 return wi, nil
251 }
252
253 sqlStr, args, err := qb.Q().Space(`UPDATE workload_identity SET ? WHERE email = ? AND workspace = ?
254 RETURNING deleted, email, name, workspace, project, config`,
255 set, wi.Email, wi.Workspace).ToSQL()
256 if err != nil {
257 return nil, errors.Wrapf(err, "failed to build sql")
258 }
259
260 var updated WorkloadIdentityMessage
261 var project sql.NullString
262 var configBytes []byte
263 if err := s.GetDB().QueryRowContext(ctx, sqlStr, args...).Scan(
264 &updated.MemberDeleted,
265 &updated.Email,
266 &updated.Name,
267 &updated.Workspace,
268 &project,
269 &configBytes,
270 ); err != nil {
271 return nil, err
272 }
273 if project.Valid {
274 updated.Project = &project.String
275 }
276 var config storepb.WorkloadIdentityConfig
277 if err := common.ProtojsonUnmarshaler.Unmarshal(configBytes, &config); err != nil {
278 return nil, err
279 }
280 updated.Config = &config
281
282 s.userEmailCache.Remove(wi.Email)
283
284 return &updated, nil
285}
286
287// DeleteWorkloadIdentity soft-deletes a workload identity.
288func (s *Store) DeleteWorkloadIdentity(ctx context.Context, wi *WorkloadIdentityMessage) error {

Callers 2

Calls 8

GetDBMethod · 0.95
QFunction · 0.92
CommaMethod · 0.80
LenMethod · 0.80
ToSQLMethod · 0.80
SpaceMethod · 0.80
ScanMethod · 0.80
UnmarshalMethod · 0.80

Tested by

no test coverage detected