package server import ( "fmt" "net/http" "git.javil.eu/jacob1123/budgeteer/postgres" "github.com/google/uuid" "github.com/labstack/echo/v4" ) func (h *Handler) importYNAB(c echo.Context) error { budgetID := c.Param("budgetid") if budgetID == "" { return echo.NewHTTPError(http.StatusBadRequest, "no budget_id specified") } budgetUUID, err := uuid.Parse(budgetID) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) } ynab, err := postgres.NewYNABImport(c.Request().Context(), h.Service.Queries, budgetUUID) if err != nil { return err } transactionsFile, err := c.FormFile("transactions") if err != nil { return fmt.Errorf("get transactions: %w", err) } transactions, err := transactionsFile.Open() if err != nil { return fmt.Errorf("open transactions: %w", err) } err = ynab.ImportTransactions(c.Request().Context(), transactions) if err != nil { return err } assignmentsFile, err := c.FormFile("assignments") if err != nil { return fmt.Errorf("get assignments: %w", err) } assignments, err := assignmentsFile.Open() if err != nil { return fmt.Errorf("open assignments: %w", err) } err = ynab.ImportAssignments(c.Request().Context(), assignments) if err != nil { return err } return nil } func (h *Handler) exportYNABTransactions(c echo.Context) error { budgetID := c.Param("budgetid") if budgetID == "" { return echo.NewHTTPError(http.StatusBadRequest, "no budget_id specified") } budgetUUID, err := uuid.Parse(budgetID) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) } ynab, err := postgres.NewYNABExport(c.Request().Context(), h.Service.Queries, budgetUUID) if err != nil { return err } err = ynab.ExportTransactions(c.Request().Context(), c.Response().Writer) if err != nil { return err } return nil } func (h *Handler) exportYNABAssignments(c echo.Context) error { budgetID := c.Param("budgetid") if budgetID == "" { return echo.NewHTTPError(http.StatusBadRequest, "no budget_id specified") } budgetUUID, err := uuid.Parse(budgetID) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) } ynab, err := postgres.NewYNABExport(c.Request().Context(), h.Service.Queries, budgetUUID) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err) } err = ynab.ExportAssignments(c.Request().Context(), c.Response().Writer) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err) } return nil }