api_search.go 1.6 KB

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