go-watch/models.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"`
}