package server import ( "net/http" "git.javil.eu/jacob1123/budgeteer/postgres" "github.com/gin-gonic/gin" "github.com/google/uuid" ) func (h *Handler) importYNAB(c *gin.Context) { budgetID, succ := c.Params.Get("budgetid") if !succ { c.AbortWithStatusJSON(http.StatusBadRequest, ErrorResponse{"no budget_id specified"}) return } budgetUUID, err := uuid.Parse(budgetID) if !succ { c.AbortWithError(http.StatusBadRequest, err) return } ynab, err := postgres.NewYNABImport(c.Request.Context(), h.Service.Queries, budgetUUID) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } transactionsFile, err := c.FormFile("transactions") if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } transactions, err := transactionsFile.Open() if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } err = ynab.ImportTransactions(c.Request.Context(), transactions) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } assignmentsFile, err := c.FormFile("assignments") if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } assignments, err := assignmentsFile.Open() if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } err = ynab.ImportAssignments(c.Request.Context(), assignments) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } } func (h *Handler) exportYNABTransactions(c *gin.Context) { budgetID, succ := c.Params.Get("budgetid") if !succ { c.AbortWithStatusJSON(http.StatusBadRequest, ErrorResponse{"no budget_id specified"}) return } budgetUUID, err := uuid.Parse(budgetID) if !succ { c.AbortWithError(http.StatusBadRequest, err) return } ynab, err := postgres.NewYNABExport(c.Request.Context(), h.Service.Queries, budgetUUID) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } err = ynab.ExportTransactions(c.Request.Context(), c.Writer) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } } func (h *Handler) exportYNABAssignments(c *gin.Context) { budgetID, succ := c.Params.Get("budgetid") if !succ { c.AbortWithStatusJSON(http.StatusBadRequest, ErrorResponse{"no budget_id specified"}) return } budgetUUID, err := uuid.Parse(budgetID) if !succ { c.AbortWithError(http.StatusBadRequest, err) return } ynab, err := postgres.NewYNABExport(c.Request.Context(), h.Service.Queries, budgetUUID) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } err = ynab.ExportAssignments(c.Request.Context(), c.Writer) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } }