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  }