Skip to content

Commit

Permalink
feat: Implement health endpoint (#88)
Browse files Browse the repository at this point in the history
  • Loading branch information
ajnavarro authored Sep 13, 2024
1 parent 220501c commit af31622
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,13 @@ make build
3. **Run the indexer**

```bash
./build/tx-indexer start --remote http://test3.gno.land:36657 --db-path indexer-db
./build/tx-indexer start --remote https://rpc.test4.gno.land --db-path indexer-db
```

or:

```bash
go run cmd/main.go cmd/start.go cmd/waiter.go start --remote http://test3.gno.land:36657 --db-path indexer-db
go run cmd/main.go cmd/start.go cmd/waiter.go start --remote https://rpc.test4.gno.land --db-path indexer-db
```

The `--remote` flag specifies the JSON-RPC URL of the chain the indexer should index, and the `--db-path` specifies the
Expand Down
2 changes: 2 additions & 0 deletions cmd/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/gnolang/tx-indexer/fetch"
"github.com/gnolang/tx-indexer/serve"
"github.com/gnolang/tx-indexer/serve/graph"
"github.com/gnolang/tx-indexer/serve/health"
"github.com/gnolang/tx-indexer/storage"
)

Expand Down Expand Up @@ -187,6 +188,7 @@ func (c *startCfg) exec(ctx context.Context) error {

mux = j.SetupRoutes(mux)
mux = graph.Setup(db, em, mux)
mux = health.Setup(db, mux)

// Create the HTTP server
hs := serve.NewHTTPServer(mux, c.listenAddress, logger.Named("http-server"))
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ require (
golang.org/x/sync v0.8.0
)

require github.com/ajg/form v1.5.1 // indirect

require (
dario.cat/mergo v1.0.0 // indirect
github.com/DataDog/zstd v1.5.5 // indirect
Expand All @@ -40,6 +42,7 @@ require (
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
github.com/getsentry/sentry-go v0.27.0 // indirect
github.com/gnolang/overflow v0.0.0-20170615021017-4d914c927216 // indirect
github.com/go-chi/render v1.0.3
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ github.com/PuerkitoBio/goquery v1.9.2/go.mod h1:GHPCaP0ODyyxqcNoFGYlAprUFH81NuRP
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8=
github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
Expand Down Expand Up @@ -95,6 +97,8 @@ github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-chi/httprate v0.12.1 h1:55l3IWrPcipqKb72yBzH+grF51z5w+2Bb/Qmu1bos/E=
github.com/go-chi/httprate v0.12.1/go.mod h1:TUepLXaz/pCjmCtf/obgOQJ2Sz6rC8fSf5cAt5cnTt0=
github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
Expand Down
30 changes: 30 additions & 0 deletions serve/health/health.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package health

import (
"fmt"
"net/http"
"time"

"github.com/go-chi/chi/v5"
"github.com/go-chi/render"

"github.com/gnolang/tx-indexer/storage"
)

func Setup(s storage.Storage, m *chi.Mux) *chi.Mux {
m.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
h, err := s.GetLatestHeight()
if err != nil {
fmt.Fprintf(w, "ERROR: %s\n", err)
render.Status(r, http.StatusInternalServerError)

return
}

fmt.Fprintf(w, "Server is responding\n")
fmt.Fprintf(w, "- Time: %s\n", time.Now())
fmt.Fprintf(w, "- Latest Height: %d\n", h)
})

return m
}

0 comments on commit af31622

Please sign in to comment.