Add get token endpoint
laisolizq laisolizq@gmail.com
Thu, 15 Oct 2020 14:21:51 +0200
3 files changed,
49 insertions(+),
1 deletions(-)
M
api/api_test.go
→
api/api_test.go
@@ -871,6 +871,31 @@ assert.Equal(t, expected[i], actual[i])
} } +func TestGetToken(t *testing.T) { + // Get all txs by their ID + endpoint := apiURL + "tokens/" + fetchedTokens := []historydb.TokenRead{} + for _, token := range tc.tokens { + fetchedToken := historydb.TokenRead{} + assert.NoError(t, doGoodReq("GET", endpoint+strconv.Itoa(int(token.TokenID)), nil, &fetchedToken)) + fetchedTokens = append(fetchedTokens, fetchedToken) + } + assertTokensAPIs(t, tc.tokens, fetchedTokens) +} + +func assertTokensAPIs(t *testing.T, expected, actual []historydb.TokenRead) { + require.Equal(t, len(expected), len(actual)) + for i := 0; i < len(actual); i++ { //nolint len(actual) won't change within the loop + if expected[i].USDUpdate == nil { + assert.Equal(t, expected[i].USDUpdate, actual[i].USDUpdate) + } else { + assert.Equal(t, expected[i].USDUpdate.Unix(), actual[i].USDUpdate.Unix()) + expected[i].USDUpdate = actual[i].USDUpdate + } + assert.Equal(t, expected[i], actual[i]) + } +} + func doGoodReqPaginated( path, order string, iterStruct db.Paginationer,
M
api/handlers.go
→
api/handlers.go
@@ -5,6 +5,7 @@ "database/sql"
"net/http" "github.com/gin-gonic/gin" + "github.com/hermeznetwork/hermez-node/common" "github.com/hermeznetwork/hermez-node/db/historydb" )@@ -205,7 +206,20 @@
} func getToken(c *gin.Context) { - + // Get TokenID + tokenIDUint, err := parseParamUint("id", nil, 0, maxUint32, c) + if err != nil { + retBadReq(err, c) + return + } + tokenID := common.TokenID(*tokenIDUint) + // Fetch token from historyDB + token, err := h.GetToken(tokenID) + if err != nil { + retSQLErr(err, c) + return + } + c.JSON(http.StatusOK, token) } func getRecommendedFee(c *gin.Context) {
M
db/historydb/historydb.go
→
db/historydb/historydb.go
@@ -288,6 +288,15 @@ )
return err } +// GetToken returns a token from the DB given a TokenID +func (hdb *HistoryDB) GetToken(tokenID common.TokenID) (*TokenRead, error) { + token := &TokenRead{} + err := meddler.QueryRow( + hdb.db, token, `SELECT * FROM token WHERE token_id = $1;`, tokenID, + ) + return token, err +} + // GetTokens returns a list of tokens from the DB func (hdb *HistoryDB) GetTokens() ([]TokenRead, error) { var tokens []*TokenRead