repo_db.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package repository
  2. import (
  3. "fmt"
  4. "strconv"
  5. "xorm.io/xorm"
  6. "xps/pkg/common"
  7. )
  8. type RepoDB struct {
  9. engine *xorm.Engine
  10. }
  11. func NewRepoDB(engine *xorm.Engine) *RepoDB {
  12. return &RepoDB{
  13. engine: engine,
  14. }
  15. }
  16. func (d *RepoDB) GetDataOfPage(tableCode string) (*common.PageResult, error) {
  17. limit := 100
  18. page := 1
  19. sqlStatement := ` SELECT A.* `
  20. sqlFrom := fmt.Sprintf(" FROM %s AS A ", tableCode)
  21. sqlWhere := ` WHERE 1 = 1 `
  22. sqlCount := ` SELECT COUNT(*) `
  23. res, err1 := d.engine.Query(sqlCount + sqlWhere)
  24. if err1 != nil {
  25. return nil, err1
  26. }
  27. total := int64(0)
  28. for _, v := range res[0] {
  29. total, _ = strconv.ParseInt(string(v), 10, 64)
  30. }
  31. pageStart := (page - 1) * limit
  32. sqlLimit := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
  33. datalist, err2 := d.engine.QueryInterface(sqlStatement + sqlFrom + sqlWhere + sqlLimit)
  34. if err2 != nil {
  35. return nil, err2
  36. }
  37. pageResult := &common.PageResult{
  38. Total: total,
  39. PageSize: limit,
  40. Page: page,
  41. Data: datalist,
  42. }
  43. return pageResult, nil
  44. }
  45. func (d *RepoDB) GetDataOfList(tableCode string) ([]map[string]interface{}, error) {
  46. sqlStatement := fmt.Sprintf(" SELECT * FROM %s ", tableCode)
  47. sqlWhere := ` WHERE 1 = 1 `
  48. results, err := d.engine.QueryInterface(sqlStatement + sqlWhere)
  49. if err != nil {
  50. return nil, err
  51. }
  52. return results, nil
  53. }