package common

import "gorm.io/gorm"

// PageInfo 分页通用输入参数结构
type PageInfo struct {
	Page     int    `json:"page" form:"page"`         // 页码
	PageSize int    `json:"pageSize" form:"pageSize"` // 每页大小
	Keyword  string `json:"keyword" form:"keyword"`   // 关键字
}

// Paginate 分页函数
func (r *PageInfo) Paginate() func(db *gorm.DB) *gorm.DB {
	return func(db *gorm.DB) *gorm.DB {
		if r.Page <= 0 {
			r.Page = 1
		}
		switch {
		case r.PageSize > 100:
			r.PageSize = 100
		case r.PageSize <= 0:
			r.PageSize = 10
		}
		offset := (r.Page - 1) * r.PageSize
		return db.Offset(offset).Limit(r.PageSize)
	}
}

// GetById 根据ID查找结构
type GetById struct {
	ID int `json:"id" form:"id"` // 主键ID
}

// Uint 转换为uint
func (r *GetById) Uint() uint {
	return uint(r.ID)
}

// IdsReq 批量ID请求
type IdsReq struct {
	Ids []int `json:"ids" form:"ids"`
}

// GetAuthorityId 根据角色ID获取结构
type GetAuthorityId struct {
	AuthorityId uint `json:"authorityId" form:"authorityId"` // 角色ID
}
