41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Watch struct {
|
|
gorm.Model
|
|
Name string `form:"name" yaml:"name" binding:"required" validate:"min=1"`
|
|
Interval int `form:"interval" yaml:"interval" binding:"required"`
|
|
URLs []URL
|
|
}
|
|
|
|
type URL struct {
|
|
gorm.Model
|
|
WatchID uint `form:"watch_id" yaml:"watch_id" binding:"required"`
|
|
Watch *Watch `form:"watch" yaml:"watch" validate:"omitempty"`
|
|
Name string `form:"name" yaml:"name" binding:"required"`
|
|
URL string `form:"url" yaml:"url" binding:"required,url"`
|
|
Queries []Query
|
|
}
|
|
|
|
type Query struct {
|
|
gorm.Model
|
|
URLID uint `form:"url_id" yaml:"url_id" binding:"required"`
|
|
URL URL
|
|
Name string `form:"name" yaml:"name" binding:"required"`
|
|
Type string `form:"type" yaml:"type" binding:"required"`
|
|
Query string `form:"query" yaml:"query" binding:"required"`
|
|
Filters []Filter
|
|
}
|
|
|
|
type Filter struct {
|
|
gorm.Model
|
|
QueryID uint `form:"query_id" yaml:"query_id" binding:"required"`
|
|
Query Query
|
|
Name string `form:"name" yaml:"name" binding:"required"`
|
|
Type string `form:"type" yaml:"type" binding:"required"`
|
|
From string `form:"from" yaml:"from" binding:"required"`
|
|
To string `form:"to" yaml:"to" binding:"required"`
|
|
}
|