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"
|
"git.javil.eu/jacob1123/budgeteer/web"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/google/uuid"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Handler handles incoming requests
|
// Handler handles incoming requests
|
||||||
@ -65,35 +64,6 @@ func (h *Handler) Serve() {
|
|||||||
router.Run(":1323")
|
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) {
|
func (h *Handler) newBudget(c *gin.Context) {
|
||||||
token, err := h.verifyLogin(c)
|
token, err := h.verifyLogin(c)
|
||||||
if err != nil {
|
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) {
|
func (h *Handler) verifyLogin(c *gin.Context) (budgeteer.Token, error) {
|
||||||
tokenString, err := c.Cookie(authCookie)
|
tokenString, err := c.Cookie(authCookie)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -8,20 +8,23 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container" id="head">
|
<div class="container" id="head">
|
||||||
Budgeteer - {{.Token.GetName}} - Budget-View
|
Budgeteer - {{.Token.GetName}} - {{.Budget.Name}}
|
||||||
</div>
|
</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">
|
<div class="budget-item">
|
||||||
<a href="#newbudgetmodal" data-toggle="modal" data-target="#newbudgetmodal">New Budget</a>
|
<a href="#newbudgetmodal" data-toggle="modal" data-target="#newbudgetmodal">New Budget</a>
|
||||||
<span class="time"></span>
|
<span class="time"></span>
|
||||||
</div>
|
</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"}}
|
{{template "budget-new"}}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
Budgeteer - {{.Token.GetName}}
|
Budgeteer - {{.Token.GetName}}
|
||||||
</div>
|
</div>
|
||||||
<div class="container col-lg-12" id="content">
|
<div class="container col-lg-12" id="content">
|
||||||
{{range .GetBudgets}}
|
{{range .Budgets}}
|
||||||
<div class="budget-item">
|
<div class="budget-item">
|
||||||
<a href="budget/{{.ID}}">{{.Name}}</a>
|
<a href="budget/{{.ID}}">{{.Name}}</a>
|
||||||
<span class="time"></span>
|
<span class="time"></span>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user