api_w_watch_list.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package route
  2. import (
  3. "opennamu/route/tool"
  4. )
  5. func Api_w_watch_list(config tool.Config, name string, num_str string, do_type string) map[string]any {
  6. db := tool.DB_connect()
  7. defer tool.DB_close(db)
  8. page := tool.Str_to_int(num_str)
  9. num := 0
  10. if page * 50 > 0 {
  11. num = page * 50 - 50
  12. }
  13. return_data := make(map[string]any)
  14. if !tool.Check_acl(db, "", "", "doc_watch_list_view", config.IP) {
  15. return_data["response"] = "require auth"
  16. return_data["data"] = []string{}
  17. } else {
  18. query := ""
  19. if do_type == "star_doc" {
  20. query = "select id from user_set where name = 'star_doc' and data = ? limit ?, 50"
  21. } else {
  22. query = "select id from user_set where name = 'watchlist' and data = ? limit ?, 50"
  23. }
  24. rows := tool.Query_DB(
  25. db,
  26. query,
  27. name,
  28. num,
  29. )
  30. defer rows.Close()
  31. data_list := [][]string{}
  32. ip_parser_temp := map[string][]string{}
  33. for rows.Next() {
  34. var user_name string
  35. err := rows.Scan(&user_name)
  36. if err != nil {
  37. panic(err)
  38. }
  39. var ip_pre string
  40. var ip_render string
  41. if _, ok := ip_parser_temp[user_name]; ok {
  42. ip_pre = ip_parser_temp[user_name][0]
  43. ip_render = ip_parser_temp[user_name][1]
  44. } else {
  45. ip_pre = tool.IP_preprocess(db, user_name, config.IP)[0]
  46. ip_render = tool.IP_parser(db, user_name, config.IP)
  47. ip_parser_temp[user_name] = []string{ip_pre, ip_render}
  48. }
  49. data_list = append(data_list, []string{ip_pre, ip_render})
  50. }
  51. return_data["response"] = "ok"
  52. return_data["data"] = data_list
  53. }
  54. return return_data
  55. }