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

Method UpdatePolicy

backend/store/policy.go:577–620  ·  view source on GitHub ↗

UpdatePolicy updates the policy.

(ctx context.Context, patch *UpdatePolicyMessage)

Source from the content-addressed store, hash-verified

575
576// UpdatePolicy updates the policy.
577func (s *Store) UpdatePolicy(ctx context.Context, patch *UpdatePolicyMessage) (*PolicyMessage, error) {
578 set := qb.Q()
579 set.Comma("updated_at = ?", time.Now())
580 if v := patch.InheritFromParent; v != nil {
581 set.Comma("inherit_from_parent = ?", *v)
582 }
583 if v := patch.Payload; v != nil {
584 set.Comma("payload = ?", *v)
585 }
586 if v := patch.Enforce; v != nil {
587 set.Comma("enforce = ?", *v)
588 }
589
590 query, args, err := qb.Q().Space("UPDATE policy SET ? WHERE resource_type = ? AND resource = ? AND type = ? AND workspace = ? RETURNING payload, inherit_from_parent, enforce, updated_at", set, patch.ResourceType, patch.Resource, patch.Type.String(), patch.Workspace).ToSQL()
591 if err != nil {
592 return nil, errors.Wrapf(err, "failed to build sql")
593 }
594
595 policy := &PolicyMessage{
596 Workspace: patch.Workspace,
597 Resource: patch.Resource,
598 ResourceType: patch.ResourceType,
599 Type: patch.Type,
600 }
601
602 if err := s.GetDB().QueryRowContext(ctx, query, args...).Scan(
603 &policy.Payload,
604 &policy.InheritFromParent,
605 &policy.Enforce,
606 &policy.UpdatedAt,
607 ); err != nil {
608 if err == sql.ErrNoRows {
609 return nil, nil
610 }
611 return nil, err
612 }
613
614 s.policyCache.Add(getPolicyCacheKey(patch.Workspace, patch.ResourceType, patch.Resource, patch.Type), policy)
615 if patch.Type == storepb.Policy_IAM {
616 s.iamPolicyCache.Remove(getIamPolicyCacheKey(patch.Workspace, patch.ResourceType, patch.Resource))
617 }
618
619 return policy, nil
620}
621
622// DeletePolicy deletes the policy.
623func (s *Store) DeletePolicy(ctx context.Context, policy *PolicyMessage) error {

Callers

nothing calls this directly

Calls 9

GetDBMethod · 0.95
QFunction · 0.92
getPolicyCacheKeyFunction · 0.85
getIamPolicyCacheKeyFunction · 0.85
CommaMethod · 0.80
ToSQLMethod · 0.80
SpaceMethod · 0.80
ScanMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected