advertise.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package tables
  2. import (
  3. "Wine-Server/utils"
  4. "fmt"
  5. )
  6. type AdvertiseTable struct {
  7. Id uint32 `json:"id"`
  8. Order uint8 `json:"order"`
  9. Time utils.TimeType `json:"time"`
  10. Src string `json:"src"`
  11. Type bool `json:"type"` // true: pic, false: video
  12. Duration uint16 `json:"duration"` // ms
  13. }
  14. func CreateAdvertiseTable() error {
  15. sql := "CREATE TABLE IF NOT EXISTS `advertise`(" +
  16. "`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY," +
  17. "`order` TINYINT UNSIGNED NOT NULL," +
  18. "`time` DATETIME DEFAULT CURRENT_TIMESTAMP," +
  19. "`type` BOOL DEFAULT TRUE," +
  20. "`src` VARCHAR(128) NOT NULL," +
  21. "`duration` SMALLINT UNSIGNED DEFAULT 3000);"
  22. _, err := utils.Mysql.Exec(sql)
  23. if err != nil {
  24. return err
  25. }
  26. return nil
  27. }
  28. func (row *AdvertiseTable) Insert() error {
  29. sql := "INSERT INTO `advertise` (`id`, `order`, `type`, `src`, `duration`) VALUES (?, ?, ?, ?, ?);"
  30. pre, err := utils.Mysql.Prepare(sql)
  31. if err != nil {
  32. return err
  33. }
  34. _, err = pre.Exec(row.Id, row.Order, row.Type, row.Src, row.Duration)
  35. if err != nil {
  36. return err
  37. }
  38. return nil
  39. }
  40. func (row *AdvertiseTable) Delete() error {
  41. pre, err := utils.Mysql.Prepare("DELETE FROM `advertise` WHERE `id`=?;")
  42. if err != nil {
  43. return err
  44. }
  45. _, err = pre.Exec(row.Id)
  46. if err != nil {
  47. return err
  48. }
  49. return nil
  50. }
  51. func (row *AdvertiseTable) Update(args utils.JsonType) error {
  52. keys, values := utils.UnZip(args)
  53. sql := fmt.Sprintf("UPDATE `advertise` SET %s WHERE `id`=%d;", utils.SqlFields(keys), row.Id)
  54. pre, err := utils.Mysql.Prepare(sql)
  55. if err != nil {
  56. return err
  57. }
  58. _, err = pre.Exec(values...)
  59. if err != nil {
  60. return err
  61. }
  62. return nil
  63. }
  64. func (row *AdvertiseTable) Get() error {
  65. sql := "SELECT `order`, `time`, `src`, `type`, `duration` FROM `advertise` WHERE `id`=?;"
  66. pre, err := utils.Mysql.Prepare(sql)
  67. if err != nil {
  68. return err
  69. }
  70. err = pre.QueryRow(row.Id).Scan(&row.Order, &row.Time, &row.Src, &row.Type, &row.Duration)
  71. if err != nil {
  72. return err
  73. }
  74. return nil
  75. }
  76. func AdvListAll() ([]AdvertiseTable, error) {
  77. var res []AdvertiseTable
  78. query, err := utils.Mysql.Query("SELECT `id`, `order`, `time`, `src`, `type`, `duration` FROM `advertise` ORDER BY `order`;")
  79. if err != nil {
  80. return nil, err
  81. }
  82. for query.Next() {
  83. var one AdvertiseTable
  84. err = query.Scan(&one.Id, &one.Order, &one.Time, &one.Src, &one.Type, &one.Duration)
  85. if err != nil {
  86. return nil, err
  87. }
  88. res = append(res, one)
  89. }
  90. return res, nil
  91. }