package server import ( "net/http" "strings" "git.javil.eu/jacob1123/budgeteer/postgres" "github.com/google/uuid" "github.com/labstack/echo/v4" ) func (h *Handler) autocompleteAccounts(c echo.Context) error { budgetID := c.Param("budgetid") budgetUUID, err := uuid.Parse(budgetID) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "budgetid missing from URL") } query := c.Request().URL.Query().Get("s") searchParams := postgres.SearchAccountsParams{ BudgetID: budgetUUID, Search: "%" + query + "%", } categories, err := h.Service.SearchAccounts(c.Request().Context(), searchParams) if err != nil { return err } return c.JSON(http.StatusOK, categories) } func (h *Handler) autocompleteCategories(c echo.Context) error { budgetID := c.Param("budgetid") budgetUUID, err := uuid.Parse(budgetID) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "budgetid missing from URL") } query := c.Request().URL.Query().Get("s") searchParams := postgres.SearchCategoriesParams{ BudgetID: budgetUUID, Search: "%" + query + "%", } categories, err := h.Service.SearchCategories(c.Request().Context(), searchParams) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err) } return c.JSON(http.StatusOK, categories) } func (h *Handler) autocompletePayee(c echo.Context) error { budgetID := c.Param("budgetid") budgetUUID, err := uuid.Parse(budgetID) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "budgetid missing from URL") } query := c.Request().URL.Query().Get("s") transferPrefix := "Transfer" if strings.HasPrefix(query, transferPrefix) { searchParams := postgres.SearchAccountsParams{ BudgetID: budgetUUID, Search: "%" + strings.Trim(query[len(transferPrefix):], " \t\n:") + "%", } accounts, err := h.Service.SearchAccounts(c.Request().Context(), searchParams) if err != nil { return err } return c.JSON(http.StatusOK, accounts) } searchParams := postgres.SearchPayeesParams{ BudgetID: budgetUUID, Search: query + "%", } payees, err := h.Service.SearchPayees(c.Request().Context(), searchParams) if err != nil { return err } return c.JSON(http.StatusOK, payees) }