aice_users.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package models
  2. import (
  3. "errors"
  4. "fmt"
  5. "reflect"
  6. "strings"
  7. "github.com/beego/beego/v2/client/orm"
  8. )
  9. type AiceUsers struct {
  10. Userid string `orm:"column(userid);pk"`
  11. Email string `orm:"column(email);size(255);null"`
  12. Token string `orm:"column(token);size(255);null"`
  13. Username string `orm:"column(username);size(255);null"`
  14. Address string `orm:"column(address);size(255);null"`
  15. }
  16. func (t *AiceUsers) TableName() string {
  17. return "aice_users"
  18. }
  19. func init() {
  20. orm.RegisterModel(new(AiceUsers))
  21. }
  22. // AddAiceUsers insert a new AiceUsers into database and returns
  23. // last inserted Id on success.
  24. func AddAiceUsers(m *AiceUsers) (id int64, err error) {
  25. o := orm.NewOrm()
  26. id, err = o.Insert(m)
  27. return
  28. }
  29. // GetAiceUsersById retrieves AiceUsers by Id. Returns error if
  30. // Id doesn't exist
  31. func GetAiceUsersById(id string) (v *AiceUsers, err error) {
  32. o := orm.NewOrm()
  33. v = &AiceUsers{Userid: id}
  34. if err = o.Read(v); err == nil {
  35. return v, nil
  36. }
  37. return nil, err
  38. }
  39. // GetAllAiceUsers retrieves all AiceUsers matches certain condition. Returns empty list if
  40. // no records exist
  41. func GetAllAiceUsers(query map[string]string, fields []string, sortby []string, order []string,
  42. offset int64, limit int64) (ml []interface{}, err error) {
  43. o := orm.NewOrm()
  44. qs := o.QueryTable(new(AiceUsers))
  45. // query k=v
  46. for k, v := range query {
  47. // rewrite dot-notation to Object__Attribute
  48. k = strings.Replace(k, ".", "__", -1)
  49. if strings.Contains(k, "isnull") {
  50. qs = qs.Filter(k, (v == "true" || v == "1"))
  51. } else {
  52. qs = qs.Filter(k, v)
  53. }
  54. }
  55. // order by:
  56. var sortFields []string
  57. if len(sortby) != 0 {
  58. if len(sortby) == len(order) {
  59. // 1) for each sort field, there is an associated order
  60. for i, v := range sortby {
  61. orderby := ""
  62. if order[i] == "desc" {
  63. orderby = "-" + v
  64. } else if order[i] == "asc" {
  65. orderby = v
  66. } else {
  67. return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  68. }
  69. sortFields = append(sortFields, orderby)
  70. }
  71. qs = qs.OrderBy(sortFields...)
  72. } else if len(sortby) != len(order) && len(order) == 1 {
  73. // 2) there is exactly one order, all the sorted fields will be sorted by this order
  74. for _, v := range sortby {
  75. orderby := ""
  76. if order[0] == "desc" {
  77. orderby = "-" + v
  78. } else if order[0] == "asc" {
  79. orderby = v
  80. } else {
  81. return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  82. }
  83. sortFields = append(sortFields, orderby)
  84. }
  85. } else if len(sortby) != len(order) && len(order) != 1 {
  86. return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
  87. }
  88. } else {
  89. if len(order) != 0 {
  90. return nil, errors.New("Error: unused 'order' fields")
  91. }
  92. }
  93. var l []AiceUsers
  94. qs = qs.OrderBy(sortFields...)
  95. if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
  96. if len(fields) == 0 {
  97. for _, v := range l {
  98. ml = append(ml, v)
  99. }
  100. } else {
  101. // trim unused fields
  102. for _, v := range l {
  103. m := make(map[string]interface{})
  104. val := reflect.ValueOf(v)
  105. for _, fname := range fields {
  106. m[fname] = val.FieldByName(fname).Interface()
  107. }
  108. ml = append(ml, m)
  109. }
  110. }
  111. return ml, nil
  112. }
  113. return nil, err
  114. }
  115. // UpdateAiceUsers updates AiceUsers by Id and returns error if
  116. // the record to be updated doesn't exist
  117. func UpdateAiceUsersById(m *AiceUsers) (err error) {
  118. o := orm.NewOrm()
  119. v := AiceUsers{Userid: m.Userid}
  120. // ascertain id exists in the database
  121. if err = o.Read(&v); err == nil {
  122. var num int64
  123. if num, err = o.Update(m); err == nil {
  124. fmt.Println("Number of records updated in database:", num)
  125. }
  126. }
  127. return
  128. }
  129. // DeleteAiceUsers deletes AiceUsers by Id and returns error if
  130. // the record to be deleted doesn't exist
  131. func DeleteAiceUsers(id string) (err error) {
  132. o := orm.NewOrm()
  133. v := AiceUsers{Userid: id}
  134. // ascertain id exists in the database
  135. if err = o.Read(&v); err == nil {
  136. var num int64
  137. if num, err = o.Delete(&AiceUsers{Userid: id}); err == nil {
  138. fmt.Println("Number of records deleted in database:", num)
  139. }
  140. }
  141. return
  142. }