2
0

api_list_recent_change.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package route
  2. import (
  3. "database/sql"
  4. "encoding/json"
  5. "fmt"
  6. "opennamu/route/tool"
  7. "strconv"
  8. )
  9. func Api_list_recent_change(call_arg []string) {
  10. db_set := map[string]string{}
  11. json.Unmarshal([]byte(call_arg[0]), &db_set)
  12. other_set := map[string]string{}
  13. json.Unmarshal([]byte(call_arg[1]), &other_set)
  14. db := tool.DB_connect(db_set)
  15. if db == nil {
  16. return
  17. }
  18. defer db.Close()
  19. set_type := other_set["set_type"]
  20. if set_type == "edit" {
  21. set_type = ""
  22. }
  23. limit_int, err := strconv.Atoi(other_set["limit"])
  24. if err != nil {
  25. return
  26. }
  27. if limit_int > 50 || limit_int < 0 {
  28. limit_int = 50
  29. }
  30. stmt, err := db.Prepare(tool.DB_change(db_set, "select id, title from rc where type = ? order by date desc limit ?"))
  31. if err != nil {
  32. return
  33. }
  34. defer stmt.Close()
  35. rows, err := stmt.Query(set_type, limit_int)
  36. if err != nil {
  37. return
  38. }
  39. defer rows.Close()
  40. var data_list [][]string
  41. admin_auth := tool.Get_user_auth(db, db_set, other_set["ip"])
  42. ip_parser_temp := map[string][]string{}
  43. for rows.Next() {
  44. var id string
  45. var title string
  46. err := rows.Scan(&id, &title)
  47. if err != nil {
  48. return
  49. }
  50. var date string
  51. var ip string
  52. var send string
  53. var leng string
  54. var hide string
  55. var type_data string
  56. stmt, err := db.Prepare(tool.DB_change(db_set, "select date, ip, send, leng, hide, type from history where id = ? and title = ?"))
  57. if err != nil {
  58. return
  59. }
  60. defer stmt.Close()
  61. err = stmt.QueryRow(id, title).Scan(&date, &ip, &send, &leng, &hide, &type_data)
  62. if err != nil {
  63. if err == sql.ErrNoRows {
  64. date = ""
  65. ip = ""
  66. send = ""
  67. leng = ""
  68. hide = ""
  69. type_data = ""
  70. } else {
  71. return
  72. }
  73. }
  74. var ip_pre string
  75. var ip_render string
  76. if _, ok := ip_parser_temp[ip]; ok {
  77. ip_pre = ip_parser_temp[ip][0]
  78. ip_render = ip_parser_temp[ip][1]
  79. } else {
  80. ip_pre = tool.IP_preprocess(db, db_set, ip, other_set["ip"])[0]
  81. ip_render = tool.IP_parser(db, db_set, ip, other_set["ip"])
  82. ip_parser_temp[ip] = []string{ip_pre, ip_render}
  83. }
  84. if hide == "" || admin_auth != "" {
  85. data_list = append(data_list, []string{
  86. id,
  87. title,
  88. date,
  89. ip_pre,
  90. send,
  91. leng,
  92. hide,
  93. ip_render,
  94. type_data,
  95. })
  96. } else {
  97. data_list = append(data_list, []string{"", "", "", "", "", "", hide, "", ""})
  98. }
  99. }
  100. if len(data_list) == 0 {
  101. fmt.Print("{}")
  102. } else {
  103. json_data, _ := json.Marshal(data_list)
  104. fmt.Print(string(json_data))
  105. }
  106. }