api_search.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package route
  2. import (
  3. "encoding/json"
  4. "log"
  5. "strconv"
  6. "opennamu/route/tool"
  7. )
  8. func Api_search(call_arg []string) string {
  9. db_set := map[string]string{}
  10. json.Unmarshal([]byte(call_arg[0]), &db_set)
  11. other_set := map[string]string{}
  12. json.Unmarshal([]byte(call_arg[1]), &other_set)
  13. page, _ := strconv.Atoi(other_set["num"])
  14. num := 0
  15. if page*50 > 0 {
  16. num = page*50 - 50
  17. }
  18. db := tool.DB_connect(db_set)
  19. defer db.Close()
  20. if other_set["search_type"] == "title" {
  21. stmt, err := db.Prepare(tool.DB_change(db_set, "select title from data where title collate nocase like ? order by title limit ?, 50"))
  22. if err != nil {
  23. log.Fatal(err)
  24. }
  25. defer stmt.Close()
  26. var title string
  27. var title_list []string
  28. rows, err := stmt.Query("%"+other_set["name"]+"%", num)
  29. if err != nil {
  30. log.Fatal(err)
  31. }
  32. defer rows.Close()
  33. for rows.Next() {
  34. err := rows.Scan(&title)
  35. if err != nil {
  36. log.Fatal(err)
  37. }
  38. title_list = append(title_list, title)
  39. }
  40. if len(title_list) == 0 {
  41. return "{}"
  42. } else {
  43. json_data, _ := json.Marshal(title_list)
  44. return string(json_data)
  45. }
  46. } else {
  47. stmt, err := db.Prepare(tool.DB_change(db_set, "select title from data where data collate nocase like ? order by title limit ?, 50"))
  48. if err != nil {
  49. log.Fatal(err)
  50. }
  51. defer stmt.Close()
  52. var title string
  53. var title_list []string
  54. rows, err := stmt.Query("%"+other_set["name"]+"%", num)
  55. if err != nil {
  56. log.Fatal(err)
  57. }
  58. defer rows.Close()
  59. for rows.Next() {
  60. err := rows.Scan(&title)
  61. if err != nil {
  62. log.Fatal(err)
  63. }
  64. title_list = append(title_list, title)
  65. }
  66. if len(title_list) == 0 {
  67. return "{}"
  68. } else {
  69. json_data, _ := json.Marshal(title_list)
  70. return string(json_data)
  71. }
  72. }
  73. }