// Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
// MEF is licensed under Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
// http://license.coscl.org.cn/MulanPSL2
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
// MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
// See the Mulan PSL v2 for more details.
// Package common for database
package common
import (
"gorm.io/gorm"
"huawei.com/mindx/common/database"
)
// Paginate slice page
func Paginate(page, pageSize uint64) func(db *gorm.DB) *gorm.DB {
return func(db *gorm.DB) *gorm.DB {
if page <= 0 {
page = DefaultPage
}
if pageSize > DefaultMaxPageSize {
pageSize = DefaultMaxPageSize
}
offset := (page - 1) * pageSize
return db.Offset(int(offset)).Limit(int(pageSize))
}
}
// GetItemCount get item count in table
func GetItemCount(table interface{}) (int, error) {
var total int64
if err := database.GetDb().Model(table).Count(&total).Error; err != nil {
return 0, err
}
return int(total), nil
}