|
| @@ -679,38 +679,40 @@ func encodeMergeability(m domain.Mergeability) ([]byte, error) { |
| 679 | | }) | 679 | | }) |
| 680 | | } | 680 | | } |
| 681 | | | 681 | | |
| 682 | - | //hexcheck:ignore suspicious-business-logic-in-adapter decodes the stored record into the domain value; no rule is applied | | | |
| 683 | | func decodeMergeability(repo domain.RepoName, number int64, item kv.Item) (domain.Mergeability, error) { | 682 | | func decodeMergeability(repo domain.RepoName, number int64, item kv.Item) (domain.Mergeability, error) { |
| 684 | | var pb storagepb.Mergeability | 683 | | var pb storagepb.Mergeability |
| 685 | | if err := proto.Unmarshal(item.Value, &pb); err != nil { | 684 | | if err := proto.Unmarshal(item.Value, &pb); err != nil { |
| 686 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: %w", number, repo, err) | 685 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: %w", number, repo, err) |
| 687 | | } | 686 | | } |
| 688 | - | out := domain.Mergeability{ | 687 | + | state, ok := mergeabilityStates[pb.GetState()] |
| 689 | - | Repo: repo, Number: number, | 688 | + | if !ok { |
| 690 | - | Behind: int(pb.GetBehind()), BehindCapped: pb.GetBehindCapped(), | | | |
| 691 | - | ConflictPaths: pb.GetConflictPaths(), | | | |
| 692 | - | ConflictPathsTruncated: pb.GetConflictPathsTruncated(), | | | |
| 693 | - | CheckedAt: pb.GetCheckedAt().AsTime(), | | | |
| 694 | - | Version: item.Version, | | | |
| 695 | - | } | | | |
| 696 | - | switch pb.GetState() { | | | |
| 697 | - | case storagepb.MergeabilityState_MERGEABILITY_STATE_UP_TO_DATE: | | | |
| 698 | - | out.State = domain.MergeabilityUpToDate | | | |
| 699 | - | case storagepb.MergeabilityState_MERGEABILITY_STATE_BEHIND: | | | |
| 700 | - | out.State = domain.MergeabilityBehind | | | |
| 701 | - | case storagepb.MergeabilityState_MERGEABILITY_STATE_CONFLICT: | | | |
| 702 | - | out.State = domain.MergeabilityConflict | | | |
| 703 | - | default: | | | |
| 704 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: unknown state %d: %w", number, repo, pb.GetState(), domain.ErrNotFound) | 689 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: unknown state %d: %w", number, repo, pb.GetState(), domain.ErrNotFound) |
| 705 | | } | 690 | | } |
| 706 | - | var err error | 691 | + | target, err := domain.ParseObjectID(pb.GetTargetId()) |
| 707 | - | if out.TargetID, err = domain.ParseObjectID(pb.GetTargetId()); err != nil { | 692 | + | if err != nil { |
| 708 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: %w", number, repo, err) | 693 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: %w", number, repo, err) |
| 709 | | } | 694 | | } |
| 710 | - | if out.HeadID, err = domain.ParseObjectID(pb.GetHeadId()); err != nil { | 695 | + | head, err := domain.ParseObjectID(pb.GetHeadId()) |
| | | 696 | + | if err != nil { |
| 711 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: %w", number, repo, err) | 697 | | return domain.Mergeability{}, fmt.Errorf("decode mergeability of %d in %q: %w", number, repo, err) |
| 712 | | } | 698 | | } |
| 713 | - | return out, nil | 699 | + | return domain.Mergeability{ |
| | | 700 | + | Repo: repo, Number: number, State: state, |
| | | 701 | + | TargetID: target, HeadID: head, |
| | | 702 | + | Behind: int(pb.GetBehind()), BehindCapped: pb.GetBehindCapped(), |
| | | 703 | + | ConflictPaths: pb.GetConflictPaths(), |
| | | 704 | + | ConflictPathsTruncated: pb.GetConflictPathsTruncated(), |
| | | 705 | + | CheckedAt: pb.GetCheckedAt().AsTime(), |
| | | 706 | + | Version: item.Version, |
| | | 707 | + | }, nil |
| | | 708 | + | } |
| | | 709 | + | |
| | | 710 | + | // mergeabilityStates maps the stored states to the domain ones; CHECKING is |
| | | 711 | + | // never stored. |
| | | 712 | + | var mergeabilityStates = map[storagepb.MergeabilityState]domain.MergeabilityState{ |
| | | 713 | + | storagepb.MergeabilityState_MERGEABILITY_STATE_UP_TO_DATE: domain.MergeabilityUpToDate, |
| | | 714 | + | storagepb.MergeabilityState_MERGEABILITY_STATE_BEHIND: domain.MergeabilityBehind, |
| | | 715 | + | storagepb.MergeabilityState_MERGEABILITY_STATE_CONFLICT: domain.MergeabilityConflict, |
| 714 | | } | 716 | | } |
| 715 | | | 717 | | |
| 716 | | func encodeMergeRequest(mr domain.MergeRequest) ([]byte, error) { | 718 | | func encodeMergeRequest(mr domain.MergeRequest) ([]byte, error) { |