package http import ( "fmt" "net/http" "time" "git.javil.eu/jacob1123/budgeteer/postgres" "github.com/gin-gonic/gin" "github.com/google/uuid" ) type NewTransactionPayload struct { Date JSONDate `json:"date"` Payee struct { ID uuid.NullUUID Name string } `json:"payee"` Category struct { ID uuid.NullUUID Name string } `json:"category"` Memo string `json:"memo"` Amount string `json:"amount"` BudgetID uuid.UUID `json:"budget_id"` AccountID uuid.UUID `json:"account_id"` State string `json:"state"` } func (h *Handler) newTransaction(c *gin.Context) { var payload NewTransactionPayload err := c.BindJSON(&payload) if err != nil { c.AbortWithError(http.StatusBadRequest, err) return } fmt.Printf("%v\n", payload) amount := postgres.Numeric{} err = amount.Set(payload.Amount) if err != nil { c.AbortWithError(http.StatusBadRequest, fmt.Errorf("amount: %w", err)) } /*transactionUUID, err := getNullUUIDFromParam(c, "transactionid") if err != nil { c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("parse transaction id: %w", err)) return }*/ //if !transactionUUID.Valid { new := postgres.CreateTransactionParams{ Memo: payload.Memo, Date: time.Time(payload.Date), Amount: amount, AccountID: payload.AccountID, PayeeID: payload.Payee.ID, //TODO handle new payee CategoryID: payload.Category.ID, //TODO handle new category Status: postgres.TransactionStatus(payload.State), } _, err = h.Service.CreateTransaction(c.Request.Context(), new) if err != nil { c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transaction: %w", err)) } // } /* _, delete := c.GetPostForm("delete") if delete { err = h.Service.DeleteTransaction(c.Request.Context(), transactionUUID.UUID) if err != nil { c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("delete transaction: %w", err)) } return } update := postgres.UpdateTransactionParams{ ID: transactionUUID.UUID, Memo: payload.Memo, Date: time.Time(payload.Date), Amount: amount, AccountID: transactionAccountID, PayeeID: payload.Payee.ID, //TODO handle new payee CategoryID: payload.Category.ID, //TODO handle new category } err = h.Service.UpdateTransaction(c.Request.Context(), update) if err != nil { c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("update transaction: %w", err)) }*/ }