arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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}