func handlePin(d *Server, ctx context.Context, cmd *wire.Command) (*wire.Response, error) { pinCmd := cmd.GetPinCommand() var isPinned bool switch balance := pinCmd.Balance; { case balance < 0: if err := d.Repo.OwnStore.Unpin(pinCmd.Path); err != nil { return nil, err } isPinned = false case balance > 0: if err := d.Repo.OwnStore.Pin(pinCmd.Path); err != nil { return nil, err } isPinned = true case balance == 0: var err error if isPinned, err = d.Repo.OwnStore.IsPinned(pinCmd.Path); err != nil { return nil, err } } return &wire.Response{ PinResp: &wire.Response_PinResp{ IsPinned: isPinned, }, }, nil }