hermez-node/api/account.go
api/account.goRaw
1package api
2
3import (
4 "net/http"
5
6 "github.com/gin-gonic/gin"
7 "github.com/hermeznetwork/hermez-node/db/historydb"
8)
9
10func (a *API) getAccount(c *gin.Context) {
11 // Get Addr
12 idx, err := parseParamIdx(c)
13 if err != nil {
14 retBadReq(err, c)
15 return
16 }
17 apiAccount, err := a.h.GetAccountAPI(*idx)
18 if err != nil {
19 retSQLErr(err, c)
20 return
21 }
22
23 c.JSON(http.StatusOK, apiAccount)
24}
25
26func (a *API) getAccounts(c *gin.Context) {
27 // Account filters
28 tokenIDs, addr, bjj, err := parseAccountFilters(c)
29 if err != nil {
30 retBadReq(err, c)
31 return
32 }
33 // Pagination
34 fromItem, order, limit, err := parsePagination(c)
35 if err != nil {
36 retBadReq(err, c)
37 return
38 }
39
40 // Fetch Accounts from historyDB
41 apiAccounts, pendingItems, err := a.h.GetAccountsAPI(tokenIDs, addr, bjj, fromItem, limit, order)
42 if err != nil {
43 retSQLErr(err, c)
44 return
45 }
46
47 // Build successful response
48 type accountResponse struct {
49 Accounts []historydb.AccountAPI `json:"accounts"`
50 PendingItems uint64 `json:"pendingItems"`
51 }
52 c.JSON(http.StatusOK, &accountResponse{
53 Accounts: apiAccounts,
54 PendingItems: pendingItems,
55 })
56}