teacher.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package api
  2. import (
  3. "fmt"
  4. "encoding/json"
  5. "net/http"
  6. "strconv"
  7. "strings"
  8. "../settings"
  9. )
  10. var Teachers []Teacher
  11. func TeacherRoute(w http.ResponseWriter, r *http.Request) {
  12. showAPIRequest(r)
  13. w.Header().Set("Content-Type", "application/json")
  14. if r.Method == "POST" {
  15. CreateTeacher(w, r)
  16. return
  17. }
  18. if r.Method == "UPDATE" || r.Method == "PATCH" {
  19. UpdateTeacher(w, r)
  20. return
  21. }
  22. path := r.URL.Path
  23. path = strings.Replace(path, "/api/teacher/", "", 1)
  24. if path==""{
  25. GetTeachers(w, r)
  26. return
  27. }
  28. num, err := strconv.Atoi(path)
  29. if err != nil {
  30. json.NewEncoder(w).Encode(struct{ Error string }{Error: "strconv error"})
  31. fmt.Println(err)
  32. return
  33. }
  34. settings.DB.Find(&Teachers)
  35. if num < 0 || num > len(Teachers)+1 {
  36. json.NewEncoder(w).Encode(struct{ Error string }{Error: "strconv error"})
  37. fmt.Println(err)
  38. return
  39. }
  40. if r.Method == "GET" {
  41. //db.Where("name = ?", "jinzhu").First(&user)
  42. GetTeacherById(w, r, num)
  43. return
  44. }
  45. json.NewEncoder(w).Encode(struct{ Error string }{Error: "This method is not supported"})
  46. }
  47. func UpdateTeacher(w http.ResponseWriter, r *http.Request){
  48. var teacher Teacher
  49. var teacherToUpdate Teacher
  50. err:= json.NewDecoder(r.Body).Decode(&teacher)
  51. if err!=nil{
  52. showError(r, err)
  53. json.NewEncoder(w).Encode(struct{ Error string }{Error: "error update teacher"})
  54. return
  55. }
  56. settings.DB.First(&teacherToUpdate, teacher.ID)
  57. settings.DB.Model(&teacherToUpdate).Updates(teacher)
  58. json.NewEncoder(w).Encode(struct{ Result string }{Result: "updated teacher"})
  59. return
  60. }
  61. func CreateTeacher(w http.ResponseWriter, r *http.Request){
  62. var newTeacher Teacher
  63. err := json.NewDecoder(r.Body).Decode(&newTeacher)
  64. if err != nil {
  65. json.NewEncoder(w).Encode(struct{ Error string }{Error: "error add new teacher"})
  66. fmt.Println(err)
  67. return
  68. }
  69. settings.DB.Create(&newTeacher)
  70. json.NewEncoder(w).Encode(struct{ Result string }{Result: "added new teacher"})
  71. return
  72. }
  73. func GetTeacherById(w http.ResponseWriter, r *http.Request, num int){
  74. var teacher Teacher
  75. settings.DB.Where("id = ?", num).First(&teacher)
  76. json.NewEncoder(w).Encode(teacher)
  77. return
  78. }
  79. func GetTeachers(w http.ResponseWriter, r *http.Request) {
  80. showAPIRequest(r)
  81. w.Header().Set("Content-Type", "application/json")
  82. if r.Method == "GET" {
  83. var Teachers []Teacher
  84. settings.DB.Find(&Teachers)
  85. json.NewEncoder(w).Encode(Teachers)
  86. }
  87. return
  88. }