| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package repositories
- import (
- "fmt"
- "math"
- "strconv"
- "xorm.io/xorm"
- "xps/viewmodel"
- )
- type RepoDB struct {
- engine *xorm.Engine
- }
- func NewRepoDB(engine *xorm.Engine) *RepoDB {
- return &RepoDB{
- engine: engine,
- }
- }
- func (d *RepoDB) GetDataOfPage(tableCode string) (*viewmodel.PageResult, error) {
- limit := 100
- page := 1
- sqlStatement := ` SELECT A.* `
- sqlFrom := fmt.Sprintf(" FROM %s AS A ", tableCode)
- sqlWhere := ` WHERE 1 = 1 `
-
- sqlCount := ` SELECT COUNT(*) `
- res, err1 := d.engine.Query(sqlCount + sqlWhere)
- if err1 != nil {
- return nil, err1
- }
-
- total := int64(0)
- for _, v := range res[0] {
- total, _ = strconv.ParseInt(string(v), 10, 64)
- }
-
- pageStart := (page - 1) * limit
- sqlLimit := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
-
- results, err2 := d.engine.QueryInterface(sqlStatement + sqlFrom + sqlWhere + sqlLimit)
- if err2 != nil {
- return nil, err2
- }
-
- pageResult := &viewmodel.PageResult{}
- pageResult.Data = results
- pageResult.Total = total
- pageResult.PageSize = limit
- pageResult.Page = page
- pageResult.TotalPage= int64(math.Ceil(float64(total / int64(limit))))
- return pageResult, nil
- }
- func (d *RepoDB) GetDataOfList(tableCode string) ([]map[string]interface{}, error) {
- sqlStatement := fmt.Sprintf(" SELECT * FROM %s ", tableCode)
- sqlWhere := ` WHERE 1 = 1 `
- results, err := d.engine.QueryInterface(sqlStatement + sqlWhere)
- if err != nil {
- return nil, err
- }
- return results, nil
- }
|