budget-go/backend/controller/crud/config.go
2025-02-08 20:19:26 +01:00

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
}