api_search.go 1.2 KB

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