badgers
Wrap badger db, serve in a web server.
Install
go get -u github.com/syfun/badgers
Usage
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"time"
"github.com/syfun/badgers"
)
func main() {
db, err := badgers.New("./data")
if err != nil {
log.Fatal(err)
}
s := db.Server()
s.Run(":8080")
// Wait for interrupt signal to gracefully shutdown the server with
// a timeout of 5 seconds.
quit := make(chan os.Signal)
// kill (no param) default send syscall.SIGTERM
// kill -2 is syscall.SIGINT
// kill -9 is syscall.SIGKILL but can't be catch, so don't need add it
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
s.Close(ctx)
// catching ctx.Done(). timeout of 5 seconds.
select {
case <-ctx.Done():
log.Println("timeout of 2 seconds.")
}
log.Println("Server exiting")
}