From 05099e469f0600de761461d604fd6a85ca5fc71c Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Fri, 25 Feb 2022 22:33:58 +0000 Subject: [PATCH] Delete transaction when amount is zero --- postgres/queries/transactions.sql | 7 +++---- postgres/transactions.sql.go | 9 +++------ server/transaction.go | 11 ++++++++++- web/src/stores/budget-account.ts | 5 +++++ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/postgres/queries/transactions.sql b/postgres/queries/transactions.sql index 95eb9a6..df751e7 100644 --- a/postgres/queries/transactions.sql +++ b/postgres/queries/transactions.sql @@ -13,10 +13,9 @@ UPDATE transactions SET date = $1, memo = $2, amount = $3, - account_id = $4, - payee_id = $5, - category_id = $6 -WHERE id = $7; + payee_id = $4, + category_id = $5 +WHERE id = $6; -- name: DeleteTransaction :exec DELETE FROM transactions diff --git a/postgres/transactions.sql.go b/postgres/transactions.sql.go index 2fbd0ee..1f02819 100644 --- a/postgres/transactions.sql.go +++ b/postgres/transactions.sql.go @@ -294,17 +294,15 @@ UPDATE transactions SET date = $1, memo = $2, amount = $3, - account_id = $4, - payee_id = $5, - category_id = $6 -WHERE id = $7 + payee_id = $4, + category_id = $5 +WHERE id = $6 ` type UpdateTransactionParams struct { Date time.Time Memo string Amount numeric.Numeric - AccountID uuid.UUID PayeeID uuid.NullUUID CategoryID uuid.NullUUID ID uuid.UUID @@ -315,7 +313,6 @@ func (q *Queries) UpdateTransaction(ctx context.Context, arg UpdateTransactionPa arg.Date, arg.Memo, arg.Amount, - arg.AccountID, arg.PayeeID, arg.CategoryID, arg.ID, diff --git a/server/transaction.go b/server/transaction.go index 30c1d77..08917d7 100644 --- a/server/transaction.go +++ b/server/transaction.go @@ -79,13 +79,22 @@ func (h *Handler) newTransaction(c *gin.Context) { } func (h *Handler) UpdateTransaction(payload NewTransactionPayload, amount numeric.Numeric, transactionID string, c *gin.Context) { + transactionUUID := uuid.MustParse(transactionID) + if amount.IsZero() { + err := h.Service.DeleteTransaction(c.Request.Context(), transactionUUID) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("delete transaction: %w", err)) + } + return + } + editTransaction := postgres.UpdateTransactionParams{ Memo: payload.Memo, Date: time.Time(payload.Date), Amount: amount, PayeeID: payload.Payee.ID, CategoryID: payload.CategoryID, - ID: uuid.MustParse(transactionID), + ID: transactionUUID, } err := h.Service.UpdateTransaction(c.Request.Context(), editTransaction) diff --git a/web/src/stores/budget-account.ts b/web/src/stores/budget-account.ts index f0405fe..db0cd12 100644 --- a/web/src/stores/budget-account.ts +++ b/web/src/stores/budget-account.ts @@ -163,6 +163,11 @@ export const useAccountStore = defineStore("budget/account", { const result = await POST("/transaction/new", payload); const response = await result.json(); this.CurrentAccount?.Transactions.unshift(response); + }, + async editTransaction(transactionid : string, payload: string) { + const result = await POST("/transaction/" + transactionid, payload); + const response = await result.json(); + this.CurrentAccount?.Transactions.unshift(response); } }