Improve Backend
This commit is contained in:
parent
fdb64b2000
commit
94b5c4bbd3
@ -66,7 +66,7 @@ AND accounts.budget_id = $1;
|
||||
-- name: GetFilteredTransactions :many
|
||||
SELECT transactions.*
|
||||
FROM display_transactions AS transactions
|
||||
WHERE (@filter_category::boolean OR transactions.category_id = @category_id)
|
||||
AND (@filter_account::boolean OR transactions.account_id = @account_id)
|
||||
AND (@filter_payee::boolean OR transactions.payee_id = @payee_id)
|
||||
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.budget_id = @budget_id;
|
@ -120,9 +120,9 @@ func (q *Queries) GetAllTransactionsForBudget(ctx context.Context, budgetID uuid
|
||||
const getFilteredTransactions = `-- name: GetFilteredTransactions :many
|
||||
SELECT transactions.id, transactions.date, transactions.memo, transactions.amount, transactions.group_id, transactions.status, transactions.account, transactions.payee_id, transactions.category_id, transactions.payee, transactions.category_group, transactions.category, transactions.transfer_account, transactions.budget_id, transactions.account_id
|
||||
FROM display_transactions AS transactions
|
||||
WHERE ($1::boolean OR transactions.category_id = $2)
|
||||
AND ($3::boolean OR transactions.account_id = $4)
|
||||
AND ($5::boolean OR transactions.payee_id = $6)
|
||||
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
|
||||
`
|
||||
|
||||
|
@ -31,9 +31,12 @@ func (h *Handler) filteredTransactions(c *gin.Context) {
|
||||
|
||||
params := postgres.GetFilteredTransactionsParams{
|
||||
BudgetID: budgetUUID,
|
||||
CategoryID: uuid.NullUUID{},
|
||||
FilterCategory: true,
|
||||
}
|
||||
params.CategoryID, params.FilterCategory = parseEmptyUUID(request.CategoryID)
|
||||
accountID, filterAccount := parseEmptyUUID(request.AccountID)
|
||||
params.AccountID, params.FilterAccount = accountID.UUID, filterAccount
|
||||
params.PayeeID, params.FilterPayee = parseEmptyUUID(request.PayeeID)
|
||||
|
||||
transactions, err := h.Service.GetFilteredTransactions(c.Request.Context(), params)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, err)
|
||||
@ -43,6 +46,19 @@ func (h *Handler) filteredTransactions(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, TransactionsResponse{nil, transactions})
|
||||
}
|
||||
|
||||
func parseEmptyUUID(value string) (uuid.NullUUID, bool) {
|
||||
if value == "" {
|
||||
return uuid.NullUUID{}, false
|
||||
}
|
||||
|
||||
val, err := uuid.Parse(value)
|
||||
if err != nil {
|
||||
return uuid.NullUUID{}, false
|
||||
}
|
||||
|
||||
return uuid.NullUUID{val, true}, true
|
||||
}
|
||||
|
||||
func (h *Handler) problematicTransactions(c *gin.Context) {
|
||||
budgetID := c.Param("budgetid")
|
||||
budgetUUID, err := uuid.Parse(budgetID)
|
||||
|
@ -68,7 +68,7 @@ func (h *Handler) LoadRoutes(router *gin.Engine) {
|
||||
budget.GET("/:budgetid/autocomplete/accounts", h.autocompleteAccounts)
|
||||
budget.GET("/:budgetid/autocomplete/categories", h.autocompleteCategories)
|
||||
budget.GET("/:budgetid/problematic-transactions", h.problematicTransactions)
|
||||
budget.GET("/:budgetid/filtered-transactions", h.filteredTransactions)
|
||||
budget.POST("/:budgetid/filtered-transactions", h.filteredTransactions)
|
||||
budget.DELETE("/:budgetid", h.deleteBudget)
|
||||
budget.POST("/:budgetid/import/ynab", h.importYNAB)
|
||||
budget.POST("/:budgetid/export/ynab/transactions", h.exportYNABTransactions)
|
||||
|
Loading…
x
Reference in New Issue
Block a user