daily pastebin goal
18%
SHARE
TWEET

Untitled

a guest Sep 30th, 2018 98 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package main
  2.  
  3. import (
  4.     "encoding/json"
  5.     "github.com/gorilla/mux"
  6.     "github.com/jinzhu/gorm"
  7.     "github.com/rs/cors"
  8.     "log"
  9.     "net/http"
  10.  
  11.     _ "github.com/jinzhu/gorm/dialects/postgres"
  12. )
  13.  
  14. type Resource struct {
  15.     gorm.Model
  16.  
  17.     Name        string
  18.     TTS     string
  19.     TTC string
  20. }
  21.  
  22. var db *gorm.DB
  23. var err error
  24.  
  25. func main() {
  26.     router := mux.NewRouter()
  27.  
  28.     db, err = gorm.Open(
  29.         "postgres",
  30.         "host=localhost"+" user=postgres"+
  31.             " dbname=Shoes"+" sslmode=disable password=root")
  32.  
  33.     if err != nil {
  34.         panic("failed to connect database")
  35.     }
  36.  
  37.     defer db.Close()
  38.  
  39.     db.AutoMigrate(&Resource{})
  40.  
  41.     router.HandleFunc("/resources", GetResources).Methods("GET")
  42.     router.HandleFunc("/resources/{id}", GetResource).Methods("GET")
  43.     router.HandleFunc("/resources", CreateResource).Methods("POST")
  44.     router.HandleFunc("/resources/{id}", DeleteResource).Methods("DELETE")
  45.  
  46.     handler := cors.Default().Handler(router)
  47.  
  48.     log.Fatal(http.ListenAndServe(":8080", handler))
  49. }
  50.  
  51. func GetResources(w http.ResponseWriter, r *http.Request) {
  52.     var resources []Resource
  53.     db.Find(&resources)
  54.     json.NewEncoder(w).Encode(&resources)
  55. }
  56.  
  57. func GetResource(w http.ResponseWriter, r *http.Request) {
  58.     params := mux.Vars(r)
  59.     var resource Resource
  60.     db.First(&resource, params["id"])
  61.     json.NewEncoder(w).Encode(&resource)
  62. }
  63.  
  64. func CreateResource(w http.ResponseWriter, r *http.Request) {
  65.     var resource Resource
  66.     json.NewDecoder(r.Body).Decode(&resource)
  67.     db.Create(&resource)
  68.     json.NewEncoder(w).Encode(&resource)
  69. }
  70.  
  71. func DeleteResource(w http.ResponseWriter, r *http.Request) {
  72.     params := mux.Vars(r)
  73.     var resource Resource
  74.     db.First(&resource, params["id"])
  75.     db.Delete(&resource)
  76.  
  77.     var resources []Resource
  78.     db.Find(&resources)
  79.     json.NewEncoder(w).Encode(&resources)
  80. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top