Beispiel #1
0
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
}