Guest User

Untitled

a guest
May 22nd, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "github.com/jinzhu/gorm"
  7. _ "github.com/jinzhu/gorm/dialects/mysql"
  8. )
  9.  
  10. var db *gorm.DB
  11. var err error
  12.  
  13. type Person struct {
  14. ID uint `gorm:"primary_key"`
  15. FirstName string
  16. LastName string
  17. }
  18.  
  19. func main() {
  20. // NOTE: See we’re using = to assign the global var
  21. // instead of := which would assign it only in this function
  22. db, err := gorm.Open("mysql", "santo:asdf@/test?charset=utf8&parseTime=True&loc=Local")
  23.  
  24. if err != nil {
  25. fmt.Println(err)
  26. }
  27. defer db.Close()
  28. db.AutoMigrate(&Person{})
  29.  
  30. r := gin.Default()
  31. r.GET("/people/", GetPeople)
  32. r.GET("/people/:id", GetPerson)
  33. r.POST("/people", CreatePerson)
  34. r.PUT("/people/:id", UpdatePerson)
  35. r.DELETE("/people/:id", DeletePerson)
  36. r.Run(":8080")
  37. }
  38.  
  39. func DeletePerson(c *gin.Context) {
  40. id := c.Params.ByName("id")
  41. var person Person
  42. d := db.Where("id = ?", id).Delete(&person)
  43. fmt.Println(d)
  44. c.JSON(200, gin.H{"id #" + id: "deleted"})
  45. }
  46.  
  47. func UpdatePerson(c *gin.Context) {
  48. var person Person
  49. id := c.Params.ByName("id")
  50. if err := db.Where("id = ?", id).First(&person).Error; err != nil {
  51. c.AbortWithStatus(404)
  52. fmt.Println(err)
  53. }
  54. c.BindJSON(&person)
  55. db.Save(&person)
  56. c.JSON(200, person)
  57. }
  58.  
  59. func CreatePerson(c *gin.Context) {
  60. var person Person
  61. c.BindJSON(&person)
  62. db.Create(&person)
  63. c.JSON(200, person)
  64. }
  65.  
  66. func GetPerson(c *gin.Context) {
  67. id := c.Params.ByName("id")
  68. var person Person
  69. if err := db.Where("id = ?", id).First(&person).Error; err != nil {
  70. c.AbortWithStatus(404)
  71. fmt.Println(err)
  72. } else {
  73. c.JSON(200, person)
  74. }
  75. }
  76.  
  77. func GetPeople(c *gin.Context) {
  78. var people []Person
  79. if err := db.Find(&people).Error; err != nil {
  80. c.AbortWithStatus(404)
  81. fmt.Println(err)
  82. } else {
  83. c.JSON(200, people)
  84. }
  85. }
  86.  
  87. http://localhost:8080/people/
  88.  
  89. runtime error: invalid memory address or nil pointer dereference
  90. /usr/local/go/src/runtime/panic.go:502 (0x42ab48)
  91.  
  92. /usr/local/go/src/runtime/panic.go:63 (0x429bbd)
  93.  
  94. /usr/local/go/src/runtime/signal_unix.go:388 (0x43f8f9)
  95.  
  96. /home/santo/go/src/github.com/jinzhu/gorm/main.go:743 (0x8dab67)
  97.  
  98. /home/santo/go/src/github.com/jinzhu/gorm/main.go:168 (0x8d642e)
  99.  
  100. /home/santo/go/src/github.com/jinzhu/gorm/main.go:311 (0x8d7432)
  101. (*DB).Find: return s.NewScope(out).inlineCondition(where...).callCallbacks(s.parent.callbacks.queries).db
  102. /home/santo/go/src/github.com/hectorgool/orm/main.go:79 (0x91a5bf)
  103. GetPeople: if err := db.Find(&people).Error; err != nil {
  104. /home/santo/go/src/github.com/gin-gonic/gin/context.go:107 (0x88e252)
  105. (*Context).Next: c.handlers[c.index](c)
  106. /home/santo/go/src/github.com/gin-gonic/gin/recovery.go:47 (0x89e639)
  107. RecoveryWithWriter.func1: c.Next()
  108. /home/santo/go/src/github.com/gin-gonic/gin/context.go:107 (0x88e252)
  109. (*Context).Next: c.handlers[c.index](c)
  110. /home/santo/go/src/github.com/gin-gonic/gin/logger.go:83 (0x89d8eb)
  111. LoggerWithWriter.func1: c.Next()
  112. /home/santo/go/src/github.com/gin-gonic/gin/context.go:107 (0x88e252)
  113. (*Context).Next: c.handlers[c.index](c)
  114. /home/santo/go/src/github.com/gin-gonic/gin/gin.go:359 (0x8959d5)
  115. (*Engine).handleHTTPRequest: c.Next()
  116. /home/santo/go/src/github.com/gin-gonic/gin/gin.go:326 (0x895222)
  117. (*Engine).ServeHTTP: engine.handleHTTPRequest(c)
  118. /usr/local/go/src/net/http/server.go:2694 (0x66520b)
  119. serverHandler.ServeHTTP: handler.ServeHTTP(rw, req)
  120. /usr/local/go/src/net/http/server.go:1830 (0x6613c0)
  121. (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req)
  122. /usr/local/go/src/runtime/asm_amd64.s:2361 (0x456d20)
  123. goexit: BYTE $0x90 // NOP
Add Comment
Please, Sign In to add comment