Modules for srvc
Each of the modules implements srvc.Module interface and can be used with srvc.Run.
package main
import (
"fmt"
"net/http"
"os"
"github.com/go-srvc/mods/httpmod"
"github.com/go-srvc/mods/logmod"
"github.com/go-srvc/mods/metermod"
"github.com/go-srvc/mods/sigmod"
"github.com/go-srvc/mods/sqlxmod"
"github.com/go-srvc/mods/tracemod"
"github.com/go-srvc/srvc"
)
func main() {
db := sqlxmod.New()
srvc.RunAndExit(
sigmod.New(os.Interrupt),
logmod.New(),
tracemod.New(),
metermod.New(),
db,
httpmod.New(
httpmod.WithHandler(
handler(db),
),
),
)
}
func handler(db *sqlxmod.DB) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if err := db.DB().PingContext(r.Context()); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
fmt.Fprint(w, "OK")
})
}
HTTP server module wrapping http.Server
.
Wrapper for otel log provider.
Wrapper for otel metrics provider.
Signal handling module for graceful application shutdown.
SQL module wrapping sql.DB
.
SQL module wrapping sqlx.DB
.
Ticker module wrapping time.Ticker
.
Wrapper for otel tracer provider.