Split budget and dashboard routes into own files
This commit is contained in:
parent
f0a1d1d475
commit
6df72dc40d
52
http/budget.go
Normal file
52
http/budget.go
Normal file
@ -0,0 +1,52 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"git.javil.eu/jacob1123/budgeteer"
|
||||
"git.javil.eu/jacob1123/budgeteer/postgres"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type BudgetData struct {
|
||||
Token budgeteer.Token
|
||||
Budget *postgres.Budget
|
||||
Transactions []postgres.Transaction
|
||||
}
|
||||
|
||||
func (h *Handler) budget(c *gin.Context) {
|
||||
token, err := h.verifyLogin(c)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/login")
|
||||
return
|
||||
}
|
||||
|
||||
budgetID := c.Param("budgetid")
|
||||
budgetUUID, err := uuid.Parse(budgetID)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/login")
|
||||
return
|
||||
}
|
||||
|
||||
budget, err := h.Service.DB.GetBudget(context.Background(), budgetUUID)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusNotFound, err)
|
||||
return
|
||||
}
|
||||
|
||||
transactions, err := h.Service.DB.GetTransactionsForBudget(context.Background(), budgetUUID)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, err)
|
||||
return
|
||||
}
|
||||
|
||||
d := BudgetData{
|
||||
Token: token,
|
||||
Budget: &budget,
|
||||
Transactions: transactions,
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "budget", d)
|
||||
}
|
34
http/dashboard.go
Normal file
34
http/dashboard.go
Normal file
@ -0,0 +1,34 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.javil.eu/jacob1123/budgeteer"
|
||||
"git.javil.eu/jacob1123/budgeteer/postgres"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func (h *Handler) dashboard(c *gin.Context) {
|
||||
token, err := h.verifyLogin(c)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/login")
|
||||
return
|
||||
}
|
||||
|
||||
userID := token.GetID()
|
||||
budgets, err := h.Service.BudgetsForUser(userID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
d := DashboardData{
|
||||
Token: token,
|
||||
Budgets: budgets,
|
||||
}
|
||||
c.HTML(http.StatusOK, "dashboard", d)
|
||||
}
|
||||
|
||||
type DashboardData struct {
|
||||
Token budgeteer.Token
|
||||
Budgets []postgres.Budget
|
||||
}
|
22
http/data.go
22
http/data.go
@ -1,22 +0,0 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"git.javil.eu/jacob1123/budgeteer"
|
||||
"git.javil.eu/jacob1123/budgeteer/postgres"
|
||||
)
|
||||
|
||||
type TemplateData struct {
|
||||
Token budgeteer.Token
|
||||
Budget *postgres.Budget
|
||||
budgetService *postgres.Repository
|
||||
}
|
||||
|
||||
func (d TemplateData) GetBudgets() []postgres.Budget {
|
||||
userID := d.Token.GetID()
|
||||
budgets, err := d.budgetService.BudgetsForUser(userID)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return budgets
|
||||
}
|
44
http/http.go
44
http/http.go
@ -14,7 +14,6 @@ import (
|
||||
"git.javil.eu/jacob1123/budgeteer/web"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// Handler handles incoming requests
|
||||
@ -65,35 +64,6 @@ func (h *Handler) Serve() {
|
||||
router.Run(":1323")
|
||||
}
|
||||
|
||||
func (h *Handler) budget(c *gin.Context) {
|
||||
token, err := h.verifyLogin(c)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/login")
|
||||
return
|
||||
}
|
||||
|
||||
budgetID := c.Param("budgetid")
|
||||
budgetUUID, err := uuid.Parse(budgetID)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/login")
|
||||
return
|
||||
}
|
||||
|
||||
budget, err := h.Service.DB.GetBudget(context.Background(), budgetUUID)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusUnauthorized, err)
|
||||
return
|
||||
}
|
||||
|
||||
d := TemplateData{
|
||||
Token: token,
|
||||
Budget: &budget,
|
||||
budgetService: h.Service,
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "budget", d)
|
||||
}
|
||||
|
||||
func (h *Handler) newBudget(c *gin.Context) {
|
||||
token, err := h.verifyLogin(c)
|
||||
if err != nil {
|
||||
@ -114,20 +84,6 @@ func (h *Handler) newBudget(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handler) dashboard(c *gin.Context) {
|
||||
token, err := h.verifyLogin(c)
|
||||
if err != nil {
|
||||
c.Redirect(http.StatusTemporaryRedirect, "/login")
|
||||
return
|
||||
}
|
||||
|
||||
d := TemplateData{
|
||||
Token: token,
|
||||
budgetService: h.Service,
|
||||
}
|
||||
c.HTML(http.StatusOK, "dashboard", d)
|
||||
}
|
||||
|
||||
func (h *Handler) verifyLogin(c *gin.Context) (budgeteer.Token, error) {
|
||||
tokenString, err := c.Cookie(authCookie)
|
||||
if err != nil {
|
||||
|
@ -8,20 +8,23 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="container" id="head">
|
||||
Budgeteer - {{.Token.GetName}} - Budget-View
|
||||
Budgeteer - {{.Token.GetName}} - {{.Budget.Name}}
|
||||
</div>
|
||||
<div class="container col-lg-12" id="content">
|
||||
{{range .GetBudgets}}
|
||||
<div class="budget-item">
|
||||
<a href="budget/{{.ID}}">{{.Name}}</a>
|
||||
<span class="time"></span>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="budget-item">
|
||||
<a href="#newbudgetmodal" data-toggle="modal" data-target="#newbudgetmodal">New Budget</a>
|
||||
<span class="time"></span>
|
||||
</div>
|
||||
</div>
|
||||
<table class="container col-lg-12" id="content">
|
||||
{{range .Transactions}}
|
||||
<tr>
|
||||
<td>{{.Date}}</td>
|
||||
<td>
|
||||
<a href="transaction/{{.ID}}">{{.Memo.String}}</a>
|
||||
</td>
|
||||
<td>{{.Amount}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</table>
|
||||
{{template "budget-new"}}
|
||||
</body>
|
||||
</html>
|
||||
|
@ -11,7 +11,7 @@
|
||||
Budgeteer - {{.Token.GetName}}
|
||||
</div>
|
||||
<div class="container col-lg-12" id="content">
|
||||
{{range .GetBudgets}}
|
||||
{{range .Budgets}}
|
||||
<div class="budget-item">
|
||||
<a href="budget/{{.ID}}">{{.Name}}</a>
|
||||
<span class="time"></span>
|
||||
|
Loading…
x
Reference in New Issue
Block a user