api_bbs_w_comment_one.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package route
  2. import (
  3. "database/sql"
  4. "log"
  5. "opennamu/route/tool"
  6. "strings"
  7. jsoniter "github.com/json-iterator/go"
  8. )
  9. func Api_bbs_w_comment_one(call_arg []string) string {
  10. var json = jsoniter.ConfigCompatibleWithStandardLibrary
  11. other_set := map[string]string{}
  12. json.Unmarshal([]byte(call_arg[0]), &other_set)
  13. db := tool.DB_connect()
  14. defer db.Close()
  15. sub_code := other_set["sub_code"]
  16. sub_code_parts := strings.Split(sub_code, "-")
  17. sub_code_last := ""
  18. new_sub_code := ""
  19. if other_set["tool"] == "around" {
  20. new_sub_code = other_set["sub_code"]
  21. } else {
  22. if len(sub_code_parts) > 2 {
  23. sub_code_last = sub_code_parts[len(sub_code_parts)-1]
  24. sub_code_parts = sub_code_parts[:len(sub_code_parts)-1]
  25. new_sub_code = strings.Join(sub_code_parts, "-")
  26. }
  27. }
  28. var rows *sql.Rows
  29. if other_set["tool"] == "around" {
  30. stmt, err := db.Prepare(tool.DB_change("select set_name, set_data, set_code, set_id from bbs_data where (set_name = 'comment' or set_name like 'comment%') and set_id = ?"))
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. defer stmt.Close()
  35. rows, err = stmt.Query(new_sub_code)
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. } else {
  40. stmt, err := db.Prepare(tool.DB_change("select set_name, set_data, set_code, set_id from bbs_data where (set_name = 'comment' or set_name like 'comment%') and set_id = ? and set_code = ?"))
  41. if err != nil {
  42. log.Fatal(err)
  43. }
  44. defer stmt.Close()
  45. rows, err = stmt.Query(new_sub_code, sub_code_last)
  46. if err != nil {
  47. log.Fatal(err)
  48. }
  49. }
  50. defer rows.Close()
  51. data_list := []map[string]string{}
  52. temp_dict := map[string]string{}
  53. before_set_code := ""
  54. for rows.Next() {
  55. var set_name string
  56. var set_data string
  57. var set_code string
  58. var set_id string
  59. err := rows.Scan(&set_name, &set_data, &set_code, &set_id)
  60. if err != nil {
  61. log.Fatal(err)
  62. }
  63. if before_set_code != set_code {
  64. if before_set_code != "" {
  65. data_list = append(data_list, temp_dict)
  66. }
  67. temp_dict = map[string]string{}
  68. temp_dict["id"] = set_id
  69. temp_dict["code"] = set_code
  70. before_set_code = set_code
  71. }
  72. temp_dict[set_name] = set_data
  73. }
  74. if before_set_code != "" {
  75. data_list = append(data_list, temp_dict)
  76. }
  77. if other_set["legacy"] != "" {
  78. json_data, _ := json.Marshal(data_list)
  79. return string(json_data)
  80. } else {
  81. return_data := make(map[string]interface{})
  82. return_data["data"] = data_list
  83. json_data, _ := json.Marshal(return_data)
  84. return string(json_data)
  85. }
  86. }