UpdateIdentityProvider updates an identity provider.
(ctx context.Context, patch *UpdateIdentityProviderMessage)
| 219 | |
| 220 | // UpdateIdentityProvider updates an identity provider. |
| 221 | func (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 |
nothing calls this directly
no test coverage detected