github.com/nutsdb/nutsdb@v1.0.4/examples/http/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "log" 7 "net/http" 8 "os" 9 10 "github.com/nutsdb/nutsdb" 11 "github.com/xujiajun/gorouter" 12 ) 13 14 var ( 15 db *nutsdb.DB 16 bucket string 17 ) 18 19 func init() { 20 fileDir := "/tmp/nutsdb_http_example" 21 22 files, _ := ioutil.ReadDir(fileDir) 23 for _, f := range files { 24 name := f.Name() 25 if name != "" { 26 fmt.Println(fileDir + "/" + name) 27 err := os.RemoveAll(fileDir + "/" + name) 28 if err != nil { 29 panic(err) 30 } 31 } 32 } 33 db, _ = nutsdb.Open( 34 nutsdb.DefaultOptions, 35 nutsdb.WithDir(fileDir), 36 nutsdb.WithSegmentSize(1024*1024), // 1MB 37 ) 38 bucket = "bucketForString" 39 } 40 41 func main() { 42 mux := gorouter.New() 43 mux.GET("/", func(w http.ResponseWriter, r *http.Request) { 44 w.Write([]byte("Hello, nutsdb!")) 45 }) 46 47 // For example you can visit like this: http://127.0.0.1:8181/test/put/key1/value1 48 mux.GET("/test/put/:key/:value", func(w http.ResponseWriter, r *http.Request) { 49 key := gorouter.GetParam(r, "key") 50 value := gorouter.GetParam(r, "value") 51 if err := db.Update( 52 func(tx *nutsdb.Tx) error { 53 key := []byte(key) 54 val := []byte(value) 55 return tx.Put(bucket, key, val, 0) 56 }); err != nil { 57 log.Fatal(err) 58 } 59 w.Write([]byte("puts data ok!")) 60 }) 61 62 // For example you can visit like this: http://127.0.0.1:8181/test/get/key1 63 mux.GET("/test/get/:key", func(w http.ResponseWriter, r *http.Request) { 64 key := gorouter.GetParam(r, "key") 65 if err := db.View( 66 func(tx *nutsdb.Tx) error { 67 value, err := tx.Get(bucket, []byte(key)) 68 if err != nil { 69 return err 70 } 71 fmt.Println("read data val:", string(value)) 72 return nil 73 }); err != nil { 74 log.Fatal(err) 75 } 76 77 w.Write([]byte("read data ok!")) 78 }) 79 80 // run http server 81 log.Fatal(http.ListenAndServe(":8181", mux)) 82 }