40 lines
1.5 KiB
Go
40 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Watch struct {
|
|
gorm.Model
|
|
Name string `form:"watch_name" yaml:"watch_name" binding:"required" validate:"min=1"`
|
|
Interval int `form:"interval" yaml:"interval" binding:"required"`
|
|
URLs []URL
|
|
}
|
|
|
|
type URL struct {
|
|
gorm.Model
|
|
WatchID uint `form:"url_watch_id" yaml:"url_watch_id" binding:"required"`
|
|
Watch *Watch `form:"watch" yaml:"watch" validate:"omitempty"`
|
|
Name string `form:"url_name" yaml:"url_name" binding:"required" validate:"min=1"`
|
|
URL string `form:"url" yaml:"url" binding:"required,url" validate:"min=1"`
|
|
GroupFilters []FilterGroup
|
|
}
|
|
|
|
type FilterGroup struct {
|
|
gorm.Model
|
|
URLID uint `form:"group_url_id" yaml:"group_url_id" binding:"required"`
|
|
URL *URL
|
|
Name string `form:"group_name" yaml:"group_name" binding:"required" validate:"min=1"`
|
|
Type string `form:"group_type" yaml:"group_type" binding:"required" validate:"oneof=diff enum number bool"`
|
|
Filters []Filter
|
|
}
|
|
|
|
type Filter struct {
|
|
gorm.Model
|
|
FilterGroupID uint `form:"filter_group_id" yaml:"filter_group_id" binding:"required"`
|
|
FilterGroup *FilterGroup
|
|
Name string `form:"filter_name" yaml:"filter_name" binding:"required" validate:"min=1"`
|
|
Type string `form:"filter_type" yaml:"filter_type" binding:"required" validate:"oneof=replace regex substring"`
|
|
From string `form:"from" yaml:"from" binding:"required"`
|
|
To string `form:"to" yaml:"to" binding:"required"`
|
|
}
|