From 1d4bc158a82cb7e091071c8d3be4505ec09de154 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Tue, 7 Dec 2021 19:08:53 +0000 Subject: [PATCH] Improve handling of context --- http/always-needed-data.go | 3 +-- http/budget.go | 5 ++--- http/budgeting.go | 3 +-- http/dashboard.go | 2 +- http/session.go | 9 +++++---- http/ynab-import.go | 2 +- postgres/budgetservice.go | 25 ++++--------------------- postgres/ynab-import.go | 12 ++++++------ 8 files changed, 21 insertions(+), 40 deletions(-) diff --git a/http/always-needed-data.go b/http/always-needed-data.go index 323f6ec..8530046 100644 --- a/http/always-needed-data.go +++ b/http/always-needed-data.go @@ -1,7 +1,6 @@ package http import ( - "context" "net/http" "git.javil.eu/jacob1123/budgeteer/postgres" @@ -23,7 +22,7 @@ func (h *Handler) getImportantData(c *gin.Context) { return } - budget, err := h.Service.DB.GetBudget(context.Background(), budgetUUID) + budget, err := h.Service.DB.GetBudget(c.Request.Context(), budgetUUID) if err != nil { c.AbortWithError(http.StatusNotFound, err) return diff --git a/http/budget.go b/http/budget.go index 8d69990..fad105e 100644 --- a/http/budget.go +++ b/http/budget.go @@ -1,7 +1,6 @@ package http import ( - "context" "net/http" "git.javil.eu/jacob1123/budgeteer" @@ -23,7 +22,7 @@ func (h *Handler) budget(c *gin.Context) { return } - transactions, err := h.Service.DB.GetTransactionsForBudget(context.Background(), budgetUUID) + transactions, err := h.Service.DB.GetTransactionsForBudget(c.Request.Context(), budgetUUID) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return @@ -45,7 +44,7 @@ func (h *Handler) newBudget(c *gin.Context) { } userID := c.MustGet("token").(budgeteer.Token).GetID() - _, err := h.Service.NewBudget(budgetName, userID) + _, err := h.Service.NewBudget(c.Request.Context(), budgetName, userID) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return diff --git a/http/budgeting.go b/http/budgeting.go index f12f6d6..7d5983c 100644 --- a/http/budgeting.go +++ b/http/budgeting.go @@ -1,7 +1,6 @@ package http import ( - "context" "net/http" "strconv" "time" @@ -59,7 +58,7 @@ func (h *Handler) budgeting(c *gin.Context) { FromDate: firstOfMonth, ToDate: firstOfNextMonth, } - categories, err := h.Service.DB.GetCategoriesWithBalance(context.Background(), params) + categories, err := h.Service.DB.GetCategoriesWithBalance(c.Request.Context(), params) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return diff --git a/http/dashboard.go b/http/dashboard.go index 81af500..51ef642 100644 --- a/http/dashboard.go +++ b/http/dashboard.go @@ -10,7 +10,7 @@ import ( func (h *Handler) dashboard(c *gin.Context) { userID := c.MustGet("token").(budgeteer.Token).GetID() - budgets, err := h.Service.BudgetsForUser(userID) + budgets, err := h.Service.DB.GetBudgetsForUser(c.Request.Context(), userID) if err != nil { return } diff --git a/http/session.go b/http/session.go index df30676..e9f73a8 100644 --- a/http/session.go +++ b/http/session.go @@ -68,7 +68,7 @@ func (h *Handler) loginPost(c *gin.Context) { username, _ := c.GetPostForm("username") password, _ := c.GetPostForm("password") - user, err := h.Service.DB.GetUserByUsername(context.Background(), username) + user, err := h.Service.DB.GetUserByUsername(c.Request.Context(), username) if err != nil { c.AbortWithError(http.StatusUnauthorized, err) return @@ -84,7 +84,8 @@ func (h *Handler) loginPost(c *gin.Context) { c.AbortWithError(http.StatusUnauthorized, err) } - _, _ = h.Service.DB.UpdateLastLogin(context.Background(), user.ID) + go h.Service.DB.UpdateLastLogin(context.Background(), user.ID) + maxAge := (int)((expiration * time.Hour).Seconds()) c.SetCookie(authCookie, t, maxAge, "", "", false, true) c.JSON(http.StatusOK, map[string]string{ @@ -97,7 +98,7 @@ func (h *Handler) registerPost(c *gin.Context) { password, _ := c.GetPostForm("password") name, _ := c.GetPostForm("name") - _, err := h.Service.DB.GetUserByUsername(context.Background(), email) + _, err := h.Service.DB.GetUserByUsername(c.Request.Context(), email) if err == nil { c.AbortWithStatus(http.StatusUnauthorized) return @@ -114,7 +115,7 @@ func (h *Handler) registerPost(c *gin.Context) { Password: hash, Email: email, } - _, err = h.Service.DB.CreateUser(context.Background(), createUser) + _, err = h.Service.DB.CreateUser(c.Request.Context(), createUser) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) } diff --git a/http/ynab-import.go b/http/ynab-import.go index 6060bb2..9f22521 100644 --- a/http/ynab-import.go +++ b/http/ynab-import.go @@ -22,7 +22,7 @@ func (h *Handler) importYNAB(c *gin.Context) { return } - ynab, err := postgres.NewYNABImport(h.Service.DB, budgetUUID) + ynab, err := postgres.NewYNABImport(c.Request.Context(), h.Service.DB, budgetUUID) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return diff --git a/postgres/budgetservice.go b/postgres/budgetservice.go index e493594..be0ca2c 100644 --- a/postgres/budgetservice.go +++ b/postgres/budgetservice.go @@ -6,32 +6,15 @@ import ( "github.com/google/uuid" ) -// Budget returns a budget for a given id. -func (s *Repository) Budget(id uuid.UUID) (*Budget, error) { - budget, err := s.DB.GetBudget(context.Background(), id) - if err != nil { - return nil, err - } - return &budget, nil -} - -func (s *Repository) BudgetsForUser(id uuid.UUID) ([]Budget, error) { - budgets, err := s.DB.GetBudgetsForUser(context.Background(), id) - if err != nil { - return nil, err - } - return budgets, nil - -} - -func (s *Repository) NewBudget(name string, userID uuid.UUID) (*Budget, error) { - budget, err := s.DB.CreateBudget(context.Background(), name) +// NewBudget creates a budget and adds it to the current user +func (s *Repository) NewBudget(context context.Context, name string, userID uuid.UUID) (*Budget, error) { + budget, err := s.DB.CreateBudget(context, name) if err != nil { return nil, err } ub := LinkBudgetToUserParams{UserID: userID, BudgetID: budget.ID} - _, err = s.DB.LinkBudgetToUser(context.Background(), ub) + _, err = s.DB.LinkBudgetToUser(context, ub) if err != nil { return nil, err } diff --git a/postgres/ynab-import.go b/postgres/ynab-import.go index bcb18e4..262c767 100644 --- a/postgres/ynab-import.go +++ b/postgres/ynab-import.go @@ -22,29 +22,29 @@ type YNABImport struct { budgetID uuid.UUID } -func NewYNABImport(q *Queries, budgetID uuid.UUID) (*YNABImport, error) { - accounts, err := q.GetAccounts(context.Background(), budgetID) +func NewYNABImport(context context.Context, q *Queries, budgetID uuid.UUID) (*YNABImport, error) { + accounts, err := q.GetAccounts(context, budgetID) if err != nil { return nil, err } - payees, err := q.GetPayees(context.Background(), budgetID) + payees, err := q.GetPayees(context, budgetID) if err != nil { return nil, err } - categories, err := q.GetCategories(context.Background(), budgetID) + categories, err := q.GetCategories(context, budgetID) if err != nil { return nil, err } - categoryGroups, err := q.GetCategoryGroups(context.Background(), budgetID) + categoryGroups, err := q.GetCategoryGroups(context, budgetID) if err != nil { return nil, err } return &YNABImport{ - Context: context.Background(), + Context: context, accounts: accounts, payees: payees, categories: categories,