version.go 1.9 KB

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