2
0

api_topic_list.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package route
  2. import (
  3. "database/sql"
  4. "opennamu/route/tool"
  5. )
  6. func Api_topic_list(config tool.Config, num string, doc_name string, do_type string) map[string]any {
  7. db := tool.DB_connect()
  8. defer tool.DB_close(db)
  9. page_int := tool.Str_to_int(num)
  10. if page_int > 0 {
  11. page_int = (page_int * 50) - 50
  12. } else {
  13. page_int = 0
  14. }
  15. var rows *sql.Rows
  16. switch do_type {
  17. case "close":
  18. rows = tool.Query_DB(
  19. db,
  20. "select code, sub, stop, agree, date from rd where title = ? and stop = 'O' order by sub asc limit ?, 50",
  21. doc_name,
  22. page_int,
  23. )
  24. case "open":
  25. rows = tool.Query_DB(
  26. db,
  27. "select code, sub, stop, agree, date from rd where title = ? and agree = 'O' order by sub asc limit ?, 50",
  28. doc_name,
  29. page_int,
  30. )
  31. default:
  32. rows = tool.Query_DB(
  33. db,
  34. "select code, sub, stop, agree, date from rd where title = ? order by sub asc limit ?, 50",
  35. doc_name,
  36. page_int,
  37. )
  38. }
  39. defer rows.Close()
  40. data_list := [][]string{}
  41. ip_parser_temp := map[string][]string{}
  42. for rows.Next() {
  43. var code string
  44. var sub string
  45. var stop string
  46. var agree string
  47. var date string
  48. err := rows.Scan(&code, &sub, &stop, &agree, &date)
  49. if err != nil {
  50. panic(err)
  51. }
  52. ip := ""
  53. id := ""
  54. tool.QueryRow_DB(
  55. db,
  56. "select ip, id from topic where code = ? order by id + 0 desc limit 1",
  57. []any{ &ip, &id },
  58. code,
  59. )
  60. var ip_pre string
  61. var ip_render string
  62. if _, ok := ip_parser_temp[ip]; ok {
  63. ip_pre = ip_parser_temp[ip][0]
  64. ip_render = ip_parser_temp[ip][1]
  65. } else {
  66. ip_pre = tool.IP_preprocess(db, ip, config.IP)[0]
  67. ip_render = tool.IP_parser(db, ip, config.IP)
  68. ip_parser_temp[ip] = []string{ip_pre, ip_render}
  69. }
  70. data_list = append(data_list, []string{
  71. code,
  72. sub,
  73. stop,
  74. agree,
  75. ip_pre,
  76. ip_render,
  77. date,
  78. id,
  79. })
  80. }
  81. return_data := make(map[string]any)
  82. return_data["data"] = data_list
  83. return return_data
  84. }