api_w_xref.go 1.8 KB

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