version.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package tables
  2. import (
  3. "Wine-Server/utils"
  4. "fmt"
  5. )
  6. type VersionTable struct {
  7. Ver uint32 `json:"ver"`
  8. Name string `json:"name"`
  9. Url string `json:"url"`
  10. }
  11. func CreateVersionTable() error {
  12. sql := "CREATE TABLE IF NOT EXISTS `version` (" +
  13. "`ver` INT UNSIGNED PRIMARY KEY NOT NULL," +
  14. "`name` VARCHAR(32)," +
  15. "`url` VARCHAR(128) NOT NULL);"
  16. _, err := utils.Mysql.Exec(sql)
  17. if err != nil {
  18. return err
  19. }
  20. return nil
  21. }
  22. func (row *VersionTable) Insert() error {
  23. sql := "INSERT INTO `version` (`ver`, `name`, `url`) VALUES (?, ?, ?);"
  24. pre, err := utils.Mysql.Prepare(sql)
  25. if err != nil {
  26. return err
  27. }
  28. _, err = pre.Exec(row.Ver, row.Name, row.Url)
  29. if err != nil {
  30. return err
  31. }
  32. return nil
  33. }
  34. func (row *VersionTable) Delete() error {
  35. pre, err := utils.Mysql.Prepare("DELETE FROM `version` WHERE `ver`=?;")
  36. if err != nil {
  37. return err
  38. }
  39. _, err = pre.Exec(row.Ver)
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. func (row *VersionTable) Update(args utils.JsonType) error {
  46. keys, values := utils.UnZip(args)
  47. sql := fmt.Sprintf("UPDATE `version` SET %s WHERE `ver`=%d;", utils.SqlFields(keys), row.Ver)
  48. pre, err := utils.Mysql.Prepare(sql)
  49. if err != nil {
  50. return err
  51. }
  52. _, err = pre.Exec(values...)
  53. if err != nil {
  54. return err
  55. }
  56. return nil
  57. }
  58. func (row *VersionTable) GetLatest() error {
  59. sql := "SELECT `ver`, `name`, `url` FROM `version` ORDER BY `ver` DESC LIMIT 1;"
  60. err := utils.Mysql.QueryRow(sql).Scan(&row.Ver, &row.Name, &row.Url)
  61. if err != nil {
  62. return err
  63. }
  64. return nil
  65. }
  66. func VersionListAll() ([]VersionTable, error) {
  67. var res []VersionTable
  68. query, err := utils.Mysql.Query("SELECT `ver`, `name`, `url` FROM `version`;")
  69. if err != nil {
  70. return nil, err
  71. }
  72. for query.Next() {
  73. var one VersionTable
  74. err = query.Scan(&one.Ver, &one.Name, &one.Url)
  75. if err != nil {
  76. return nil, err
  77. }
  78. res = append(res, one)
  79. }
  80. return res, nil
  81. }