api_bbs_list.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package route
  2. import (
  3. "database/sql"
  4. "log"
  5. "opennamu/route/tool"
  6. jsoniter "github.com/json-iterator/go"
  7. )
  8. func bbs_list(db *sql.DB) map[string]string {
  9. rows, err := db.Query(tool.DB_change("select set_data, set_id from bbs_set where set_name = 'bbs_name'"))
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. defer rows.Close()
  14. data_list := map[string]string{}
  15. for rows.Next() {
  16. var name string
  17. var id string
  18. err := rows.Scan(&name, &id)
  19. if err != nil {
  20. log.Fatal(err)
  21. }
  22. data_list[name] = id
  23. }
  24. return data_list
  25. }
  26. func Api_bbs_list(call_arg []string) string {
  27. var json = jsoniter.ConfigCompatibleWithStandardLibrary
  28. db := tool.DB_connect()
  29. defer db.Close()
  30. data_list := bbs_list(db)
  31. data_list_sub := map[string][]string{}
  32. for k, v := range data_list {
  33. stmt, err := db.Prepare(tool.DB_change("select set_data from bbs_set where set_name = 'bbs_type' and set_id = ?"))
  34. if err != nil {
  35. log.Fatal(err)
  36. }
  37. defer stmt.Close()
  38. var bbs_type string
  39. err = stmt.QueryRow(v).Scan(&bbs_type)
  40. if err != nil {
  41. if err == sql.ErrNoRows {
  42. bbs_type = ""
  43. } else {
  44. log.Fatal(err)
  45. }
  46. }
  47. stmt, err = db.Prepare(tool.DB_change("select set_data from bbs_data where set_id = ? and set_name = 'date' order by set_code + 0 desc limit 1"))
  48. if err != nil {
  49. log.Fatal(err)
  50. }
  51. defer stmt.Close()
  52. var bbs_date string
  53. err = stmt.QueryRow(v).Scan(&bbs_date)
  54. if err != nil {
  55. if err == sql.ErrNoRows {
  56. bbs_date = ""
  57. } else {
  58. log.Fatal(err)
  59. }
  60. }
  61. data_list_sub[k] = []string{v, bbs_type, bbs_date}
  62. }
  63. return_data := make(map[string]interface{})
  64. return_data["language"] = map[string]string{
  65. "thread_base": tool.Get_language(db, "thread_base", false),
  66. "comment_base": tool.Get_language(db, "comment_base", false),
  67. }
  68. return_data["data"] = data_list_sub
  69. json_data, _ := json.Marshal(return_data)
  70. return string(json_data)
  71. }