Continue migration to echo

This commit is contained in:
2022-08-20 22:23:42 +00:00
parent 210ddd65a5
commit 014c3818ba
10 changed files with 168 additions and 199 deletions

View File

@@ -8,8 +8,8 @@ import (
"git.javil.eu/jacob1123/budgeteer/postgres"
"git.javil.eu/jacob1123/budgeteer/postgres/numeric"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"github.com/labstack/echo/v4"
)
type ReconcileTransactionsRequest struct {
@@ -22,68 +22,60 @@ type ReconcileTransactionsResponse struct {
ReconciliationTransaction *postgres.DisplayTransaction
}
func (h *Handler) reconcileTransactions(c *gin.Context) {
func (h *Handler) reconcileTransactions(c echo.Context) error {
accountID := c.Param("accountid")
accountUUID, err := uuid.Parse(accountID)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
return
return echo.NewHTTPError(http.StatusBadRequest, err)
}
var request ReconcileTransactionsRequest
err = c.BindJSON(&request)
err = c.Bind(&request)
if err != nil {
c.AbortWithError(http.StatusBadRequest, fmt.Errorf("parse request: %w", err))
return
return echo.NewHTTPError(http.StatusBadRequest, fmt.Errorf("parse request: %w", err))
}
var amount numeric.Numeric
err = amount.Set(request.ReconcilationTransactionAmount)
if err != nil {
c.AbortWithError(http.StatusBadRequest, fmt.Errorf("parse request: %w", err))
return
return echo.NewHTTPError(http.StatusBadRequest, fmt.Errorf("parse request: %w", err))
}
tx, err := h.Service.BeginTx(c.Request.Context(), &sql.TxOptions{})
tx, err := h.Service.BeginTx(c.Request().Context(), &sql.TxOptions{})
if err != nil {
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("begin tx: %w", err))
return
return fmt.Errorf("begin tx: %w", err)
}
db := h.Service.WithTx(tx)
for _, transactionID := range request.TransactionIDs {
err := db.SetTransactionReconciled(c.Request.Context(), transactionID)
err := db.SetTransactionReconciled(c.Request().Context(), transactionID)
if err != nil {
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("update transaction: %w", err))
return
return fmt.Errorf("update transaction: %w", err)
}
}
reconciliationTransaction, err := h.CreateReconcilationTransaction(amount, accountUUID, db, c)
if err != nil {
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("insert new transaction: %w", err))
return
return fmt.Errorf("insert new transaction: %w", err)
}
err = h.Service.SetLastReconciled(c.Request.Context(), accountUUID)
err = h.Service.SetLastReconciled(c.Request().Context(), accountUUID)
if err != nil {
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("set last reconciled: %w", err))
return
return fmt.Errorf("set last reconciled: %w", err)
}
err = tx.Commit()
if err != nil {
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("commit: %w", err))
return
return fmt.Errorf("commit: %w", err)
}
c.JSON(http.StatusOK, ReconcileTransactionsResponse{
return c.JSON(http.StatusOK, ReconcileTransactionsResponse{
Message: fmt.Sprintf("Set status for %d transactions", len(request.TransactionIDs)),
ReconciliationTransaction: reconciliationTransaction,
})
}
func (*Handler) CreateReconcilationTransaction(amount numeric.Numeric, accountUUID uuid.UUID, db *postgres.Queries, c *gin.Context) (*postgres.DisplayTransaction, error) {
func (*Handler) CreateReconcilationTransaction(amount numeric.Numeric, accountUUID uuid.UUID, db *postgres.Queries, c echo.Context) (*postgres.DisplayTransaction, error) {
if amount.IsZero() {
return nil, nil //nolint: nilnil
}
@@ -95,12 +87,12 @@ func (*Handler) CreateReconcilationTransaction(amount numeric.Numeric, accountUU
AccountID: accountUUID,
Status: "Reconciled",
}
transactionUUID, err := db.CreateTransaction(c.Request.Context(), createTransaction)
transactionUUID, err := db.CreateTransaction(c.Request().Context(), createTransaction)
if err != nil {
return nil, fmt.Errorf("insert new transaction: %w", err)
}
transaction, err := db.GetTransaction(c.Request.Context(), transactionUUID)
transaction, err := db.GetTransaction(c.Request().Context(), transactionUUID)
if err != nil {
return nil, fmt.Errorf("get created transaction: %w", err)
}