From f8a8a6fc0cdccc07a8d1dc4536d44815b8bed70d Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Sun, 24 Apr 2022 20:40:03 +0000 Subject: [PATCH] Add date filtering to backend --- postgres/queries/transactions.sql | 1 + postgres/transactions.sql.go | 7 ++++++- server/account.go | 12 +++++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/postgres/queries/transactions.sql b/postgres/queries/transactions.sql index c80b906..622b8cb 100644 --- a/postgres/queries/transactions.sql +++ b/postgres/queries/transactions.sql @@ -69,4 +69,5 @@ FROM display_transactions AS transactions WHERE (NOT @filter_category::boolean OR transactions.category_id = @category_id) AND (NOT @filter_account::boolean OR transactions.account_id = @account_id) AND (NOT @filter_payee::boolean OR transactions.payee_id = @payee_id) +AND transactions.date BETWEEN @from_date AND @to_date AND transactions.budget_id = @budget_id; \ No newline at end of file diff --git a/postgres/transactions.sql.go b/postgres/transactions.sql.go index 70012b7..2986f69 100644 --- a/postgres/transactions.sql.go +++ b/postgres/transactions.sql.go @@ -123,7 +123,8 @@ FROM display_transactions AS transactions WHERE (NOT $1::boolean OR transactions.category_id = $2) AND (NOT $3::boolean OR transactions.account_id = $4) AND (NOT $5::boolean OR transactions.payee_id = $6) -AND transactions.budget_id = $7 +AND transactions.date BETWEEN $7 AND $8 +AND transactions.budget_id = $9 ` type GetFilteredTransactionsParams struct { @@ -133,6 +134,8 @@ type GetFilteredTransactionsParams struct { AccountID uuid.UUID FilterPayee bool PayeeID uuid.NullUUID + FromDate time.Time + ToDate time.Time BudgetID uuid.UUID } @@ -144,6 +147,8 @@ func (q *Queries) GetFilteredTransactions(ctx context.Context, arg GetFilteredTr arg.AccountID, arg.FilterPayee, arg.PayeeID, + arg.FromDate, + arg.ToDate, arg.BudgetID, ) if err != nil { diff --git a/server/account.go b/server/account.go index 5c29756..a895a93 100644 --- a/server/account.go +++ b/server/account.go @@ -1,7 +1,9 @@ package server import ( + "fmt" "net/http" + "time" "git.javil.eu/jacob1123/budgeteer/postgres" "github.com/gin-gonic/gin" @@ -9,9 +11,11 @@ import ( ) type FilterTransactionsRequest struct { - CategoryID string `json:"category_id"` - PayeeID string `json:"payee_id"` - AccountID string `json:"account_id"` + CategoryID string `json:"category_id"` + PayeeID string `json:"payee_id"` + AccountID string `json:"account_id"` + FromDate time.Time `json:"from_date"` + ToDate time.Time `json:"to_date"` } func (h *Handler) filteredTransactions(c *gin.Context) { @@ -31,6 +35,8 @@ func (h *Handler) filteredTransactions(c *gin.Context) { params := postgres.GetFilteredTransactionsParams{ BudgetID: budgetUUID, + FromDate: request.FromDate, + ToDate: request.ToDate, } params.CategoryID, params.FilterCategory = parseEmptyUUID(request.CategoryID) accountID, filterAccount := parseEmptyUUID(request.AccountID)