2
0

api_bbs_list.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package route
  2. import (
  3. "database/sql"
  4. "opennamu/route/tool"
  5. "sort"
  6. )
  7. func bbs_list(db *sql.DB) map[string]string {
  8. rows := tool.Query_DB(
  9. db,
  10. "select set_data, set_id from bbs_set where set_name = 'bbs_name' and " + tool.Get_except_set_id_SQL(),
  11. )
  12. defer rows.Close()
  13. data_list := map[string]string{}
  14. for rows.Next() {
  15. var name string
  16. var id string
  17. err := rows.Scan(&name, &id)
  18. if err != nil {
  19. panic(err)
  20. }
  21. data_list[name] = id
  22. }
  23. return data_list
  24. }
  25. type BBS_item struct {
  26. Id string
  27. Name string
  28. Type string
  29. Date string
  30. }
  31. func Api_bbs_list(config tool.Config) map[string]any {
  32. db := tool.DB_connect()
  33. defer tool.DB_close(db)
  34. data_list := bbs_list(db)
  35. items := make([]BBS_item, 0, len(data_list))
  36. for k, v := range data_list {
  37. bbs_type := ""
  38. tool.QueryRow_DB(
  39. db,
  40. "select set_data from bbs_set where set_name = 'bbs_type' and set_id = ?",
  41. []any{ &bbs_type },
  42. v,
  43. )
  44. bbs_date := ""
  45. tool.QueryRow_DB(
  46. db,
  47. "select set_data from bbs_data where set_id = ? and set_name = 'date' order by set_code + 0 desc limit 1",
  48. []any{ &bbs_date },
  49. v,
  50. )
  51. items = append(items, BBS_item{
  52. Id : v,
  53. Name : k,
  54. Type : bbs_type,
  55. Date : bbs_date,
  56. })
  57. }
  58. sort.Slice(items, func(i, j int) bool {
  59. return items[i].Date > items[j].Date
  60. })
  61. data_list_sub := make([][]string, 0, len(items))
  62. for _, item := range items {
  63. data_list_sub = append(data_list_sub, []string{ item.Name, item.Id, item.Type, item.Date })
  64. }
  65. return_data := make(map[string]any)
  66. return_data["response"] = "ok"
  67. return_data["data"] = data_list_sub
  68. return return_data
  69. }