zdravko/internal/models/models.go

74 lines
1.5 KiB
Go
Raw Normal View History

2024-02-11 10:56:21 +00:00
package models
import (
"time"
"github.com/lib/pq"
"gorm.io/gorm"
)
2024-02-12 08:25:11 +00:00
type OAuth2State struct {
State string `gorm:"primary_key"`
Expiry time.Time
}
type Worker struct {
gorm.Model
Name string `gorm:"unique" validate:"required"`
Slug string `gorm:"unique"`
Group string `validate:"required"`
Status string
}
2024-02-11 10:56:21 +00:00
type Healthcheck struct {
gorm.Model
Slug string `gorm:"unique"`
Name string `gorm:"unique" validate:"required"`
2024-02-11 10:56:21 +00:00
Status string // UP, DOWN
UptimePercentage float64
Schedule string `validate:"required,cron"`
WorkerGroups pq.StringArray `gorm:"type:text[]"`
}
type HealthcheckHttp struct {
gorm.Model
Healthcheck
Url string `validate:"required,url"`
Method string `validate:"required,oneof=GET POST"`
History []HealthcheckHttpHistory `gorm:"foreignKey:ID"`
}
type HealthcheckTcp struct {
gorm.Model
Healthcheck
Hostname string `validate:"required,hostname"`
Port int `validate:"required,gte=1,lte=65535"`
}
type Cronjob struct {
gorm.Model
Slug string `gorm:"unique"`
Name string `gorm:"unique"`
Schedule string
Buffer int
2024-02-11 10:56:21 +00:00
}
type HealthcheckHttpHistory struct {
gorm.Model
HealthcheckHTTP HealthcheckHttp `gorm:"foreignkey:ID"`
Status string
}
type HealthcheckTcpHistory struct {
gorm.Model
HealthcheckTCP HealthcheckTcp `gorm:"foreignkey:ID"`
Status string
}
type CronjobHistory struct {
gorm.Model
Cronjob Cronjob `gorm:"foreignkey:ID"`
Status string
}