api_func_search.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package route
  2. import (
  3. "database/sql"
  4. "log"
  5. "strconv"
  6. "opennamu/route/tool"
  7. jsoniter "github.com/json-iterator/go"
  8. )
  9. func Api_func_search(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. 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()
  19. defer db.Close()
  20. var stmt *sql.Stmt
  21. var err error
  22. if other_set["search_type"] == "title" {
  23. stmt, err = db.Prepare(tool.DB_change("select title from data where title collate nocase like ? order by title limit ?, 50"))
  24. if err != nil {
  25. log.Fatal(err)
  26. }
  27. } else {
  28. stmt, err = db.Prepare(tool.DB_change("select title from data where data collate nocase like ? order by title limit ?, 50"))
  29. if err != nil {
  30. log.Fatal(err)
  31. }
  32. }
  33. defer stmt.Close()
  34. title_list := []string{}
  35. rows, err := stmt.Query("%"+other_set["name"]+"%", num)
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. defer rows.Close()
  40. for rows.Next() {
  41. var title string
  42. err := rows.Scan(&title)
  43. if err != nil {
  44. log.Fatal(err)
  45. }
  46. title_list = append(title_list, title)
  47. }
  48. json_data, _ := json.Marshal(title_list)
  49. return string(json_data)
  50. }