rediscfg.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package model
  2. import (
  3. "database/sql"
  4. "errors"
  5. )
  6. type RedisCfg struct {
  7. Model
  8. }
  9. type RedisCfgRow struct {
  10. Id int64
  11. Address string
  12. Remark string
  13. Password string
  14. MaxConnectWait int64
  15. MaxStatusFailed int64
  16. MinMemoryFree int64
  17. StepMemoryIncrease int64
  18. MaxMemoryUsage int64
  19. MaxConnection int64
  20. MaxEviIncreased int64
  21. MaxQPS int64
  22. MailList string
  23. Disabled bool
  24. }
  25. func NewRedisCfg(db *sql.DB) *RedisCfg {
  26. return &RedisCfg{
  27. Model{
  28. db: db,
  29. },
  30. }
  31. }
  32. func (m *RedisCfg) Insert(row *RedisCfgRow) (int64, error) {
  33. if row.Address == "" {
  34. return 0, errors.New("Address不能为空")
  35. }
  36. disabledInt := 0
  37. if row.Disabled {
  38. disabledInt = 1
  39. }
  40. ret, err := m.db.Exec(`INSERT INTO rediscfg(
  41. address,
  42. remark,
  43. password,
  44. max_connect_wait,
  45. max_status_failed,
  46. min_memory_free,
  47. step_memory_increase,
  48. max_memory_usage,
  49. max_connection,
  50. max_evi_increased,
  51. max_qps,
  52. mail_list,
  53. disabled
  54. ) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)`,
  55. row.Address,
  56. row.Remark,
  57. row.Password,
  58. row.MaxConnectWait,
  59. row.MaxStatusFailed,
  60. row.MinMemoryFree,
  61. row.StepMemoryIncrease,
  62. row.MaxMemoryUsage,
  63. row.MaxConnection,
  64. row.MaxEviIncreased,
  65. row.MaxQPS,
  66. row.MailList,
  67. disabledInt,
  68. )
  69. if err != nil {
  70. return 0, err
  71. }
  72. return ret.LastInsertId()
  73. }
  74. func (m *RedisCfg) Update(row *RedisCfgRow) (int64, error) {
  75. if row.Id <= 0 {
  76. return 0, errors.New("ID必须是大于0的整数")
  77. }
  78. if row.Address == "" {
  79. return 0, errors.New("Address不能为空")
  80. }
  81. disabledInt := 0
  82. if row.Disabled {
  83. disabledInt = 1
  84. }
  85. ret, err := m.db.Exec(`UPDATE rediscfg SET
  86. address=?,
  87. remark=?,
  88. password=?,
  89. max_connect_wait=?,
  90. max_status_failed=?,
  91. min_memory_free=?,
  92. step_memory_increase=?,
  93. max_memory_usage=?,
  94. max_connection=?,
  95. max_evi_increased=?,
  96. max_qps=?,
  97. mail_list=?,
  98. disabled=?
  99. WHERE id=?`,
  100. row.Address,
  101. row.Remark,
  102. row.Password,
  103. row.MaxConnectWait,
  104. row.MaxStatusFailed,
  105. row.MinMemoryFree,
  106. row.StepMemoryIncrease,
  107. row.MaxMemoryUsage,
  108. row.MaxConnection,
  109. row.MaxEviIncreased,
  110. row.MaxQPS,
  111. row.MailList,
  112. disabledInt,
  113. row.Id,
  114. )
  115. if err != nil {
  116. return 0, nil
  117. }
  118. return ret.RowsAffected()
  119. }
  120. func (m *RedisCfg) Delete(id int64) (int64, error) {
  121. if id <= 0 {
  122. return 0, errors.New("ID必须是大于0的整数")
  123. }
  124. ret, err := m.db.Exec("DELETE FROM rediscfg WHERE id=?", id)
  125. if err != nil {
  126. return 0, err
  127. }
  128. return ret.RowsAffected()
  129. }
  130. func (m *RedisCfg) Get(id int64) (*RedisCfgRow, error) {
  131. if id <= 0 {
  132. return nil, errors.New("ID必须是大于0的整数")
  133. }
  134. result := m.db.QueryRow(`SELECT id,
  135. address,
  136. remark,
  137. password,
  138. max_connect_wait,
  139. max_status_failed,
  140. min_memory_free,
  141. step_memory_increase,
  142. max_memory_usage,
  143. max_connection,
  144. max_evi_increased,
  145. max_qps,
  146. mail_list,
  147. disabled
  148. FROM rediscfg WHERE id=?`,
  149. id,
  150. )
  151. row := RedisCfgRow{}
  152. err := result.Scan(
  153. &row.Id,
  154. &row.Address,
  155. &row.Remark,
  156. &row.Password,
  157. &row.MaxConnectWait,
  158. &row.MaxStatusFailed,
  159. &row.MinMemoryFree,
  160. &row.StepMemoryIncrease,
  161. &row.MaxMemoryUsage,
  162. &row.MaxConnection,
  163. &row.MaxEviIncreased,
  164. &row.MaxQPS,
  165. &row.MailList,
  166. &row.Disabled,
  167. )
  168. if err != nil {
  169. if err == sql.ErrNoRows {
  170. return nil, errors.New("记录不存在")
  171. } else {
  172. return nil, err
  173. }
  174. } else {
  175. return &row, nil
  176. }
  177. }
  178. func (m *RedisCfg) GetAll(disabledInt int) ([]*RedisCfgRow, error) {
  179. var sql string
  180. if disabledInt < 0 {
  181. sql = `SELECT id,
  182. address,
  183. remark,
  184. password,
  185. max_connect_wait,
  186. max_status_failed,
  187. min_memory_free,
  188. step_memory_increase,
  189. max_memory_usage,
  190. max_connection,
  191. max_evi_increased,
  192. max_qps,
  193. mail_list,
  194. disabled
  195. FROM rediscfg WHERE disabled>? ORDER BY id`
  196. } else {
  197. sql = `SELECT id,
  198. address,
  199. remark,
  200. password,
  201. max_connect_wait,
  202. max_status_failed,
  203. min_memory_free,
  204. step_memory_increase,
  205. max_memory_usage,
  206. max_connection,
  207. max_evi_increased,
  208. max_qps,
  209. mail_list,
  210. disabled
  211. FROM rediscfg WHERE disabled=? ORDER BY id`
  212. }
  213. result, err := m.db.Query(sql, disabledInt)
  214. if err != nil {
  215. return nil, err
  216. }
  217. rows := make([]*RedisCfgRow, 0)
  218. for result.Next() {
  219. row := RedisCfgRow{}
  220. err = result.Scan(
  221. &row.Id,
  222. &row.Address,
  223. &row.Remark,
  224. &row.Password,
  225. &row.MaxConnectWait,
  226. &row.MaxStatusFailed,
  227. &row.MinMemoryFree,
  228. &row.StepMemoryIncrease,
  229. &row.MaxMemoryUsage,
  230. &row.MaxConnection,
  231. &row.MaxEviIncreased,
  232. &row.MaxQPS,
  233. &row.MailList,
  234. &row.Disabled,
  235. )
  236. if err != nil {
  237. continue
  238. }
  239. rows = append(rows, &row)
  240. }
  241. return rows, nil
  242. }