mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-12 02:45:49 +02:00
enhance(cosy): pagination list
This commit is contained in:
parent
79d0d37526
commit
526fedd04a
1 changed files with 40 additions and 38 deletions
|
@ -99,50 +99,52 @@ func (c *Ctx[T]) ListAllData() (data any, ok bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Ctx[T]) PagingListData() (*model.DataList, bool) {
|
func (c *Ctx[T]) PagingListData() (*model.DataList, bool) {
|
||||||
result, ok := c.result()
|
result, ok := c.result()
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
scopesResult := result.Session(&gorm.Session{}).Scopes(c.OrderAndPaginate())
|
scopesResult := result.Scopes(c.OrderAndPaginate())
|
||||||
data := &model.DataList{}
|
data := &model.DataList{}
|
||||||
if c.scan == nil {
|
if c.scan == nil {
|
||||||
models := make([]*T, 0)
|
models := make([]*T, 0)
|
||||||
scopesResult.Find(&models)
|
scopesResult.Find(&models)
|
||||||
|
|
||||||
if c.transformer != nil {
|
if c.transformer != nil {
|
||||||
transformed := make([]any, 0)
|
transformed := make([]any, 0)
|
||||||
for k := range models {
|
for k := range models {
|
||||||
transformed = append(transformed, c.transformer(models[k]))
|
transformed = append(transformed, c.transformer(models[k]))
|
||||||
}
|
}
|
||||||
data.Data = transformed
|
data.Data = transformed
|
||||||
} else {
|
} else {
|
||||||
data.Data = models
|
data.Data = models
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
data.Data = c.scan(scopesResult)
|
data.Data = c.scan(scopesResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
var totalRecords int64
|
var totalRecords int64
|
||||||
result.Session(&gorm.Session{}).Count(&totalRecords)
|
delete(result.Statement.Clauses, "ORDER BY")
|
||||||
|
delete(result.Statement.Clauses, "LIMIT")
|
||||||
|
result.Count(&totalRecords)
|
||||||
|
|
||||||
page := cast.ToInt(c.ctx.Query("page"))
|
page := cast.ToInt(c.ctx.Query("page"))
|
||||||
if page == 0 {
|
if page == 0 {
|
||||||
page = 1
|
page = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
pageSize := settings.ServerSettings.PageSize
|
pageSize := settings.ServerSettings.PageSize
|
||||||
if reqPageSize := c.ctx.Query("page_size"); reqPageSize != "" {
|
if reqPageSize := c.ctx.Query("page_size"); reqPageSize != "" {
|
||||||
pageSize = cast.ToInt(reqPageSize)
|
pageSize = cast.ToInt(reqPageSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
data.Pagination = model.Pagination{
|
data.Pagination = model.Pagination{
|
||||||
Total: totalRecords,
|
Total: totalRecords,
|
||||||
PerPage: pageSize,
|
PerPage: pageSize,
|
||||||
CurrentPage: page,
|
CurrentPage: page,
|
||||||
TotalPages: model.TotalPage(totalRecords, pageSize),
|
TotalPages: model.TotalPage(totalRecords, pageSize),
|
||||||
}
|
}
|
||||||
return data, true
|
return data, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Ctx[T]) PagingList() {
|
func (c *Ctx[T]) PagingList() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue