75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package repository
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Repositories 所有仓库的集合
|
|
type Repositories struct {
|
|
User *UserRepository
|
|
ApiKey *ApiKeyRepository
|
|
Group *GroupRepository
|
|
Account *AccountRepository
|
|
Proxy *ProxyRepository
|
|
RedeemCode *RedeemCodeRepository
|
|
UsageLog *UsageLogRepository
|
|
Setting *SettingRepository
|
|
UserSubscription *UserSubscriptionRepository
|
|
}
|
|
|
|
// NewRepositories 创建所有仓库
|
|
func NewRepositories(db *gorm.DB) *Repositories {
|
|
return &Repositories{
|
|
User: NewUserRepository(db),
|
|
ApiKey: NewApiKeyRepository(db),
|
|
Group: NewGroupRepository(db),
|
|
Account: NewAccountRepository(db),
|
|
Proxy: NewProxyRepository(db),
|
|
RedeemCode: NewRedeemCodeRepository(db),
|
|
UsageLog: NewUsageLogRepository(db),
|
|
Setting: NewSettingRepository(db),
|
|
UserSubscription: NewUserSubscriptionRepository(db),
|
|
}
|
|
}
|
|
|
|
// PaginationParams 分页参数
|
|
type PaginationParams struct {
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
// PaginationResult 分页结果
|
|
type PaginationResult struct {
|
|
Total int64
|
|
Page int
|
|
PageSize int
|
|
Pages int
|
|
}
|
|
|
|
// DefaultPagination 默认分页参数
|
|
func DefaultPagination() PaginationParams {
|
|
return PaginationParams{
|
|
Page: 1,
|
|
PageSize: 20,
|
|
}
|
|
}
|
|
|
|
// Offset 计算偏移量
|
|
func (p PaginationParams) Offset() int {
|
|
if p.Page < 1 {
|
|
p.Page = 1
|
|
}
|
|
return (p.Page - 1) * p.PageSize
|
|
}
|
|
|
|
// Limit 获取限制数
|
|
func (p PaginationParams) Limit() int {
|
|
if p.PageSize < 1 {
|
|
return 20
|
|
}
|
|
if p.PageSize > 100 {
|
|
return 100
|
|
}
|
|
return p.PageSize
|
|
}
|