func()

in api/internal/handler/stream_route/stream_route.go [85:115]


func (h *Handler) List(c droplet.Context) (interface{}, error) {
	input := c.Input().(*ListInput)
	ret, err := h.streamRouteStore.List(c.Context(), store.ListInput{
		Predicate: func(obj interface{}) bool {
			if input.RemoteAddr != "" && !strings.Contains(obj.(*entity.StreamRoute).RemoteAddr, input.RemoteAddr) {
				return false
			}

			if input.ServerAddr != "" && !strings.Contains(obj.(*entity.StreamRoute).ServerAddr, input.ServerAddr) {
				return false
			}

			if input.ServerPort != 0 && obj.(*entity.StreamRoute).ServerPort != input.ServerPort {
				return false
			}

			if input.SNI != "" && !strings.Contains(obj.(*entity.StreamRoute).SNI, input.SNI) {
				return false
			}

			return true
		},
		PageSize:   input.PageSize,
		PageNumber: input.PageNumber,
	})

	if err != nil {
		return nil, err
	}
	return ret, nil
}