payment gateway for rpn cn
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

151 lines
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. }