trade.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package tables
  2. import (
  3. "Wine-Server/utils"
  4. )
  5. type TradeTable struct {
  6. Id string `json:"id"`
  7. Trade string `json:"trade"`
  8. Device string `json:"device"`
  9. Time utils.TimeType `json:"time"`
  10. Payer string `json:"payer"`
  11. Wine uint16 `json:"wine"`
  12. Weight uint16 `json:"weight"`
  13. Cash int `json:"cash"`
  14. Manager string `json:"manager"`
  15. }
  16. func CreateTradeTable() error {
  17. sql := "CREATE TABLE IF NOT EXISTS `trade`(" +
  18. "`id` VARCHAR(32) PRIMARY KEY NOT NULL," +
  19. "`trade` VARCHAR(64) NOT NULL," +
  20. "`device` VARCHAR(32) NOT NULL," +
  21. "`time` DATETIME DEFAULT CURRENT_TIMESTAMP," +
  22. "`payer` VARCHAR(64) NOT NULL," +
  23. "`wine` SMALLINT UNSIGNED NOT NULL," +
  24. "`weight` SMALLINT UNSIGNED NOT NULL," +
  25. "`cash` INT UNSIGNED NOT NULL," +
  26. "`manager` VARCHAR(16));"
  27. _, err := utils.Mysql.Exec(sql)
  28. if err != nil {
  29. return err
  30. }
  31. return nil
  32. }
  33. func (row *TradeTable) Insert() error {
  34. sql := "INSERT INTO `trade`(`id`,`trade`,`device`,`payer`,`wine`,`weight`,`cash`,`manager`) VALUES(?,?,?,?,?,?,?,?);"
  35. pre, err := utils.Mysql.Prepare(sql)
  36. if err != nil {
  37. return err
  38. }
  39. _, err = pre.Exec(row.Id, row.Trade, row.Device, row.Payer, row.Wine, row.Weight, row.Cash, row.Manager)
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. func (row *TradeTable) Delete() error {
  46. pre, err := utils.Mysql.Prepare("DELETE FROM `trade` WHERE `id`=?;")
  47. if err != nil {
  48. return err
  49. }
  50. _, err = pre.Exec(row.Id)
  51. if err != nil {
  52. return err
  53. }
  54. return nil
  55. }
  56. func (row *TradeTable) Update(args utils.JsonType) error {
  57. keys, values := utils.UnZip(args)
  58. sql := utils.Format("UPDATE `trade` SET %s WHERE `id`=%s;", utils.SqlFields(keys), row.Id)
  59. pre, err := utils.Mysql.Prepare(sql)
  60. if err != nil {
  61. return err
  62. }
  63. _, err = pre.Exec(values...)
  64. if err != nil {
  65. return err
  66. }
  67. return nil
  68. }
  69. func (row *TradeTable) UpdateSelf() error {
  70. sql := "UPDATE `trade` SET `trade`=?,`device`=?,`time`=?,`payer`=?,`wine`=?,`weight`=?,`cash`=?,`manager`=? WHERE `id`=?;"
  71. pre, err := utils.Mysql.Prepare(sql)
  72. if err != nil {
  73. return err
  74. }
  75. _, err = pre.Exec(row.Trade, row.Device, row.Time, row.Payer, row.Wine, row.Weight, row.Cash, row.Manager, row.Id)
  76. if err != nil {
  77. return err
  78. }
  79. return nil
  80. }
  81. func (row *TradeTable) Get() error {
  82. sql := "SELECT `trade`,`device`,`time`,`payer`,`wine`,`weight`,`cash`,`manager` FROM `trade` WHERE `id`=?;"
  83. pre, err := utils.Mysql.Prepare(sql)
  84. if err != nil {
  85. return err
  86. }
  87. err = pre.QueryRow(row.Id).Scan(
  88. &row.Trade, &row.Device, &row.Time, &row.Payer,
  89. &row.Wine, &row.Weight, &row.Cash, &row.Manager,
  90. )
  91. if err != nil {
  92. return err
  93. }
  94. return nil
  95. }
  96. // TODO: list by: <device>, <manager>, <payer> with time-duration