36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
package storage
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"gardomatic.kleiax.de/internal/platform/validate"
|
|
)
|
|
|
|
// TaskPriorityModelInterface manages the application-wide priority catalogue.
|
|
type TaskPriorityModelInterface interface {
|
|
Insert(priority TaskPriority) (TaskPriority, error)
|
|
Get(id int) (TaskPriority, error)
|
|
GetAll() ([]TaskPriority, error)
|
|
Update(priority TaskPriority) (TaskPriority, error)
|
|
}
|
|
|
|
// TaskPriority maps a user-facing label to the numeric value stored on tasks.
|
|
type TaskPriority struct {
|
|
ID int `json:"id"`
|
|
Name string `json:"name"`
|
|
Value int `json:"value"`
|
|
SortOrder int `json:"sort_order"`
|
|
Active bool `json:"active"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Version int `json:"version"`
|
|
}
|
|
|
|
// ValidateTaskPriority applies catalogue-entry validation rules.
|
|
func ValidateTaskPriority(v *validate.Validator, priority TaskPriority) {
|
|
v.Check(strings.TrimSpace(priority.Name) != "", "name", "must be provided")
|
|
v.Check(len(priority.Name) <= 100, "name", "must not be more than 100 bytes long")
|
|
v.Check(priority.Value >= -100 && priority.Value <= 100, "value", "must be between -100 and 100")
|
|
}
|