Implement API endpoint for transactions

This commit is contained in:
Jan Bader 2022-01-25 19:17:48 +00:00
parent 458f4f0e8f
commit c2bbaebfd2
4 changed files with 33 additions and 3 deletions

View File

@ -52,3 +52,29 @@ func (h *Handler) account(c *gin.Context) {
c.HTML(http.StatusOK, "account.html", d) c.HTML(http.StatusOK, "account.html", d)
} }
func (h *Handler) transactionsForAccount(c *gin.Context) {
accountID := c.Param("accountid")
accountUUID, err := uuid.Parse(accountID)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
return
}
account, err := h.Service.GetAccount(c.Request.Context(), accountUUID)
if err != nil {
c.AbortWithError(http.StatusNotFound, err)
return
}
transactions, err := h.Service.GetTransactionsForAccount(c.Request.Context(), accountUUID)
if err != nil {
c.AbortWithError(http.StatusNotFound, err)
return
}
c.JSON(http.StatusOK, struct {
Account postgres.Account
Transactions []postgres.GetTransactionsForAccountRow
}{account, transactions})
}

View File

@ -1,6 +1,7 @@
package http package http
import ( import (
"fmt"
"net/http" "net/http"
"git.javil.eu/jacob1123/budgeteer/postgres" "git.javil.eu/jacob1123/budgeteer/postgres"
@ -17,8 +18,7 @@ func (h *Handler) getImportantData(c *gin.Context) {
budgetID := c.Param("budgetid") budgetID := c.Param("budgetid")
budgetUUID, err := uuid.Parse(budgetID) budgetUUID, err := uuid.Parse(budgetID)
if err != nil { if err != nil {
c.Redirect(http.StatusTemporaryRedirect, "/login") c.AbortWithError(http.StatusBadRequest, fmt.Errorf("budgetid missing from URL"))
c.Abort()
return return
} }

View File

@ -73,6 +73,7 @@ func (h *Handler) Serve() {
authenticated := api.Group("") authenticated := api.Group("")
authenticated.Use(h.verifyLoginWithForbidden) authenticated.Use(h.verifyLoginWithForbidden)
authenticated.GET("/dashboard", h.dashboard) authenticated.GET("/dashboard", h.dashboard)
authenticated.GET("/account/:accountid/transactions", h.transactionsForAccount)
withBudget2 := authenticated.Group("") withBudget2 := authenticated.Group("")
withBudget2.Use(h.getImportantData) withBudget2.Use(h.getImportantData)

View File

@ -14,6 +14,9 @@ const budget = {
}, },
setCurrentAccount(state, account) { setCurrentAccount(state, account) {
state.CurrentAccount = account; state.CurrentAccount = account;
},
setTransactions(state, transactions){
state.Transactions = transactions;
} }
}, },
getters: { getters: {
@ -44,7 +47,7 @@ const budget = {
return commit("setAccounts", response.Accounts); return commit("setAccounts", response.Accounts);
}, },
async fetchAccount ({state, commit, rootState}, accountid) { async fetchAccount ({state, commit, rootState}, accountid) {
const result = await fetch("/api/v1/account/" + accountid, { const result = await fetch("/api/v1/account/" + accountid + "/transactions", {
headers: { headers: {
'Authorization': 'Bearer ' + rootState.Session.Token 'Authorization': 'Bearer ' + rootState.Session.Token
} }