manager.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package tables
  2. import (
  3. "Wine-Server/utils"
  4. )
  5. type ManagerTable struct {
  6. Id string
  7. Super bool
  8. First utils.TimeType
  9. Last utils.TimeType
  10. Name string
  11. Account string
  12. Password string
  13. Order uint32
  14. Income uint64
  15. }
  16. func CreateManagerTable() error {
  17. sql := "CREATE TABLE IF NOT EXISTS `manager`(" +
  18. "`id` VARCHAR(16) PRIMARY KEY," +
  19. "`super` BOOL DEFAULT FALSE," +
  20. "`first` DATETIME DEFAULT CURRENT_TIMESTAMP," +
  21. "`last` DATETIME DEFAULT CURRENT_TIMESTAMP," +
  22. "`name` VARCHAR(16) NOT NULL," +
  23. "`account` VARCHAR(32) NOT NULL," +
  24. "`password` CHAR(128) NOT NULL," +
  25. "`order` INT UNSIGNED DEFAULT 0," +
  26. "`income` BIGINT UNSIGNED DEFAULT 0);"
  27. _, err := utils.Mysql.Exec(sql)
  28. if err != nil {
  29. return err
  30. }
  31. return nil
  32. }
  33. func (row *ManagerTable) Insert() error {
  34. sql := "INSERT INTO `manager`(`id`,`name`,`account`,`password`) VALUES(?,?,?,?);"
  35. pre, err := utils.Mysql.Prepare(sql)
  36. if err != nil {
  37. return err
  38. }
  39. _, err = pre.Exec(row.Id, row.Name, row.Account, row.Password)
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. func (row *ManagerTable) Delete() error {
  46. pre, err := utils.Mysql.Prepare("DELETE FROM `manager` 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 *ManagerTable) Update(args utils.JsonType) error {
  57. keys, values := utils.UnZip(args)
  58. sql := utils.Format("UPDATE `manager` 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 *ManagerTable) UpdateSelf() error {
  70. sql := "UPDATE `manager` SET `super`=?,`last`=?,`name`=?,`account`=?,`password`=?,`order`=?,`income`=? WHERE `id`=?;"
  71. pre, err := utils.Mysql.Prepare(sql)
  72. if err != nil {
  73. return err
  74. }
  75. row.Last = utils.TimeNow()
  76. _, err = pre.Exec(row.Super, row.Last, row.Name, row.Account, row.Password, row.Order, row.Income, row.Id)
  77. if err != nil {
  78. return err
  79. }
  80. return nil
  81. }
  82. func (row *ManagerTable) Get() error {
  83. sql := "SELECT `super`,`first`,`last`,`name`,`account`,`password`,`order`,`income` FROM `manager` WHERE `id`=?;"
  84. pre, err := utils.Mysql.Prepare(sql)
  85. if err != nil {
  86. return err
  87. }
  88. err = pre.QueryRow(row.Id).Scan(
  89. &row.Super, &row.First, &row.Last, &row.Name,
  90. &row.Account, &row.Password, &row.Order, &row.Income,
  91. )
  92. if err != nil {
  93. return err
  94. }
  95. return nil
  96. }
  97. func (row *ManagerTable) GetByAcc() error {
  98. sql := "SELECT `id`,`super`,`first`,`last`,`name`,`password`,`order`,`income` FROM `manager` WHERE `account`=? LIMIT 1;"
  99. pre, err := utils.Mysql.Prepare(sql)
  100. if err != nil {
  101. return err
  102. }
  103. err = pre.QueryRow(row.Account).Scan(
  104. &row.Id, &row.Super, &row.First, &row.Last,
  105. &row.Name, &row.Password, &row.Order, &row.Income,
  106. )
  107. if err != nil {
  108. return err
  109. }
  110. return nil
  111. }
  112. func QueryManager(name string) ([]utils.JsonType, error) {
  113. like := utils.Format("%%%s%%", name)
  114. sql := "SELECT `id`,`name` FROM `manager` WHERE `super`=0 AND `name` LIKE ? LIMIT 10;"
  115. pre, err := utils.Mysql.Prepare(sql)
  116. if err != nil {
  117. return nil, err
  118. }
  119. rows, err := pre.Query(like)
  120. if err != nil {
  121. return nil, err
  122. }
  123. res := make([]utils.JsonType, 0)
  124. for rows.Next() {
  125. tid, tna := "", ""
  126. _ = rows.Scan(&tid, &tna)
  127. res = append(res, utils.JsonType{"id": tid, "name": tna})
  128. }
  129. err = rows.Close()
  130. if err != nil {
  131. return nil, err
  132. }
  133. return res, nil
  134. }