payment gateway for rpn cn
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

151 lignes
3.1KB

  1. package main
  2. import (
  3. "database/sql"
  4. "log"
  5. "net/http"
  6. "text/template"
  7. _ "github.com/go-sql-driver/mysql"
  8. )
  9. type Employee struct {
  10. Id int
  11. Name string
  12. City string
  13. }
  14. var tmpl = template.Must(template.ParseGlob("form/*.tmpl"))
  15. func dbConn() (db *sql.DB) {
  16. dbDriver := Config.DB.Driver
  17. dbUser := Config.DB.User
  18. dbPass := Config.DB.Pass
  19. dbName := Config.DB.Schema
  20. db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
  21. if err != nil {
  22. panic(err.Error())
  23. }
  24. return db
  25. }
  26. func Index(w http.ResponseWriter, r *http.Request) {
  27. db := dbConn()
  28. selDB, err := db.Query("SELECT * FROM Employee ORDER BY id DESC")
  29. if err != nil {
  30. panic(err.Error())
  31. }
  32. emp := Employee{}
  33. res := []Employee{}
  34. for selDB.Next() {
  35. var id int
  36. var name, city string
  37. err = selDB.Scan(&id, &name, &city)
  38. if err != nil {
  39. panic(err.Error())
  40. }
  41. emp.Id = id
  42. emp.Name = name
  43. emp.City = city
  44. res = append(res, emp)
  45. }
  46. tmpl.ExecuteTemplate(w, "Index", res)
  47. defer db.Close()
  48. }
  49. func Show(w http.ResponseWriter, r *http.Request) {
  50. db := dbConn()
  51. nId := r.URL.Query().Get("id")
  52. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  53. if err != nil {
  54. panic(err.Error())
  55. }
  56. emp := Employee{}
  57. for selDB.Next() {
  58. var id int
  59. var name, city string
  60. err = selDB.Scan(&id, &name, &city)
  61. if err != nil {
  62. panic(err.Error())
  63. }
  64. emp.Id = id
  65. emp.Name = name
  66. emp.City = city
  67. }
  68. tmpl.ExecuteTemplate(w, "Show", emp)
  69. defer db.Close()
  70. }
  71. func New(w http.ResponseWriter, r *http.Request) {
  72. tmpl.ExecuteTemplate(w, "New", nil)
  73. }
  74. func Edit(w http.ResponseWriter, r *http.Request) {
  75. db := dbConn()
  76. nId := r.URL.Query().Get("id")
  77. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  78. if err != nil {
  79. panic(err.Error())
  80. }
  81. emp := Employee{}
  82. for selDB.Next() {
  83. var id int
  84. var name, city string
  85. err = selDB.Scan(&id, &name, &city)
  86. if err != nil {
  87. panic(err.Error())
  88. }
  89. emp.Id = id
  90. emp.Name = name
  91. emp.City = city
  92. }
  93. tmpl.ExecuteTemplate(w, "Edit", emp)
  94. defer db.Close()
  95. }
  96. func Insert(w http.ResponseWriter, r *http.Request) {
  97. db := dbConn()
  98. if r.Method == "POST" {
  99. name := r.FormValue("name")
  100. city := r.FormValue("city")
  101. insForm, err := db.Prepare("INSERT INTO Employee(name, city) VALUES(?,?)")
  102. if err != nil {
  103. panic(err.Error())
  104. }
  105. insForm.Exec(name, city)
  106. log.Println("INSERT: Name: " + name + " | City: " + city)
  107. }
  108. defer db.Close()
  109. http.Redirect(w, r, "/", 301)
  110. }
  111. func Update(w http.ResponseWriter, r *http.Request) {
  112. db := dbConn()
  113. if r.Method == "POST" {
  114. name := r.FormValue("name")
  115. city := r.FormValue("city")
  116. id := r.FormValue("uid")
  117. insForm, err := db.Prepare("UPDATE Employee SET name=?, city=? WHERE id=?")
  118. if err != nil {
  119. panic(err.Error())
  120. }
  121. insForm.Exec(name, city, id)
  122. log.Println("UPDATE: Name: " + name + " | City: " + city)
  123. }
  124. defer db.Close()
  125. http.Redirect(w, r, "/", 301)
  126. }
  127. func Delete(w http.ResponseWriter, r *http.Request) {
  128. db := dbConn()
  129. emp := r.URL.Query().Get("id")
  130. delForm, err := db.Prepare("DELETE FROM Employee WHERE id=?")
  131. if err != nil {
  132. panic(err.Error())
  133. }
  134. delForm.Exec(emp)
  135. log.Println("DELETE")
  136. defer db.Close()
  137. http.Redirect(w, r, "/", 301)
  138. }