arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/api/exits.go
api/exits.goRaw
 1package api
 2
 3import (
 4	"net/http"
 5
 6	"github.com/gin-gonic/gin"
 7	"github.com/hermeznetwork/hermez-node/db"
 8	"github.com/hermeznetwork/hermez-node/db/historydb"
 9)
10
11func getExits(c *gin.Context) {
12	// Get query parameters
13	// Account filters
14	tokenID, addr, bjj, idx, err := parseAccountFilters(c)
15	if err != nil {
16		retBadReq(err, c)
17		return
18	}
19	// BatchNum
20	batchNum, err := parseQueryUint("batchNum", nil, 0, maxUint32, c)
21	if err != nil {
22		retBadReq(err, c)
23		return
24	}
25	// Pagination
26	fromItem, order, limit, err := parsePagination(c)
27	if err != nil {
28		retBadReq(err, c)
29		return
30	}
31
32	// Fetch exits from historyDB
33	exits, pagination, err := h.GetExitsAPI(
34		addr, bjj, tokenID, idx, batchNum, fromItem, limit, order,
35	)
36	if err != nil {
37		retSQLErr(err, c)
38		return
39	}
40
41	// Build succesfull response
42	type exitsResponse struct {
43		Exits      []historydb.ExitAPI `json:"exits"`
44		Pagination *db.Pagination      `json:"pagination"`
45	}
46	c.JSON(http.StatusOK, &exitsResponse{
47		Exits:      exits,
48		Pagination: pagination,
49	})
50}
51
52func getExit(c *gin.Context) {
53	// Get batchNum and accountIndex
54	batchNum, err := parseParamUint("batchNum", nil, 0, maxUint32, c)
55	if err != nil {
56		retBadReq(err, c)
57		return
58	}
59	idx, err := parseParamIdx(c)
60	if err != nil {
61		retBadReq(err, c)
62		return
63	}
64	// Fetch tx from historyDB
65	exit, err := h.GetExitAPI(batchNum, idx)
66	if err != nil {
67		retSQLErr(err, c)
68		return
69	}
70	// Build succesfull response
71	c.JSON(http.StatusOK, exit)
72}