65 lines
1 KiB
Go
65 lines
1 KiB
Go
package crud
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
type Configuration struct {
|
|
Model interface{}
|
|
Models any
|
|
ValidOrders []string
|
|
ValidLimits []int
|
|
DefaultOrder string
|
|
DefaultSort string
|
|
DefaultLimit int
|
|
CreateModel func() interface{}
|
|
Table string
|
|
ListQuery func(*gorm.DB)
|
|
ItemQuery func(*gorm.DB)
|
|
}
|
|
|
|
func (c *Configuration) GetDefaultOrder() string {
|
|
if c.DefaultOrder != "" {
|
|
return c.DefaultOrder
|
|
}
|
|
|
|
return "id"
|
|
}
|
|
|
|
func (c *Configuration) GetDefaultSort() string {
|
|
if c.DefaultSort != "" {
|
|
return c.DefaultSort
|
|
}
|
|
|
|
return "asc"
|
|
}
|
|
|
|
func (c *Configuration) GetValidLimits() []int {
|
|
if len(c.ValidLimits) > 0 {
|
|
return c.ValidLimits
|
|
}
|
|
|
|
return []int{10, 20, 50, 100}
|
|
}
|
|
|
|
func (c *Configuration) IsValidOrder(value string) bool {
|
|
for _, v := range c.ValidOrders {
|
|
if v == value {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func (c *Configuration) IsValidLimit(value int) bool {
|
|
if value == 0 {
|
|
return true
|
|
}
|
|
|
|
for _, v := range c.GetValidLimits() {
|
|
if v == value {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|