Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.48 KB | None | 0 0
  1. package models
  2. curl -i http://localhost:12345/..
  3. curl -i -L -d "note" http://localhost:12345/..
  4. import (
  5.     "errors"
  6.     // Import the Radix.v2 pool package, NOT the redis package.
  7.     "github.com/mediocregopher/radix.v2/pool"
  8.     "log"
  9.     "strconv"
  10. )
  11.  
  12. // Declare a global db variable to store the Redis connection pool.
  13. var db *pool.Pool
  14.  
  15. func init() {
  16.     var err error
  17.     // Establish a pool of 10 connections to the Redis server listening on
  18.     // port 6379 of the local machine.
  19.     db, err = pool.New("tcp", "localhost:6379", 10)
  20.     if err != nil {
  21.         log.Panic(err)
  22.     }
  23. }
  24.  
  25. // Create a new error message and store it as a constant. We'll use this
  26. // error later if the FindNote() function fails to find an Note with a
  27. // specific id.
  28. var ErrNoNote = errors.New("models: no note found")
  29.  
  30. type Note struct {
  31.     Title  string
  32. }
  33.  
  34. func GetNbNotes() (int, error){
  35.     conn, err := db.Get()
  36.     if err != nil {
  37.         return 0,err
  38.     }
  39.     defer db.Put(conn)
  40.  
  41.     nbNotes, err := conn.Cmd("GET", "nbnotes").Int()
  42.  
  43.     if err != nil {
  44.         nbNotes = 0
  45.     }
  46.    
  47.     return nbNotes, nil
  48. }
  49.  
  50. func InsertNote(title string) (string, error) {
  51.     conn, err := db.Get()
  52.     if err != nil {
  53.         return "",err
  54.     }
  55.     defer db.Put(conn)
  56.  
  57.     nbNotes, err := GetNbNotes()
  58.  
  59.     if err != nil {
  60.         nbNotes = 0
  61.     }
  62.  
  63.     nbNotes = nbNotes + 1
  64.  
  65.     err = conn.Cmd("MULTI").Err
  66.     if err != nil {
  67.         return "",err
  68.     }
  69.    
  70.     err = conn.Cmd("HMSET", "notes:"+strconv.Itoa(nbNotes), "title", title).Err
  71.     if err != nil {
  72.         return "",err
  73.     }
  74.  
  75.     err = conn.Cmd("INCR", "nbnotes").Err
  76.     if err != nil {
  77.         return "",err
  78.     }
  79.  
  80.     err = conn.Cmd("EXEC").Err
  81.     if err != nil {
  82.         return "",err
  83.     }
  84.  
  85.     return strconv.Itoa(nbNotes), nil
  86. }
  87.  
  88. func PopulateNote(reply map[string]string) (*Note, error) {
  89.     n := new(Note)
  90.     n.Title = reply["title"]
  91.     return n, nil
  92. }
  93.  
  94. func FindNote(id string) (*Note, error) {
  95.     reply, err := db.Cmd("HGETALL", "notes:"+id).Map()
  96.     if err != nil {
  97.         return nil, err
  98.     } else if len(reply) == 0 {
  99.         return nil, ErrNoNote
  100.     }
  101.  
  102.     return PopulateNote(reply)
  103. }
  104.  
  105. func DeleteNote(id string) (error) {
  106.     conn, err := db.Get()
  107.     if err != nil {
  108.         return err
  109.     }
  110.     defer db.Put(conn)
  111.  
  112.     status, err := conn.Cmd("del", "notes:"+id).Int()
  113.  
  114.     if status == 0 {
  115.         return ErrNoNote
  116.     }
  117.    
  118.     return nil
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement