dns_record.go 918 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package models
  2. import (
  3. "fmt"
  4. "gorm.io/gorm"
  5. )
  6. // DNSRecord type that extends gorm.Model
  7. type DNSRecord struct {
  8. gorm.Model
  9. SubdomainPrefix string `json:"subdomain_prefix" gorm:"unique"`
  10. RootDomain string `json:"root_domain"`
  11. Endpoint string `json:"endpoint"`
  12. Hostname string `json:"hostname"`
  13. ClusterID uint `json:"cluster_id"`
  14. }
  15. // DNSRecordExternal represents the DNSRecord type that is sent over REST
  16. type DNSRecordExternal struct {
  17. ExternalURL string `json:"external_url"`
  18. Endpoint string `json:"endpoint"`
  19. Hostname string `json:"hostname"`
  20. ClusterID uint `json:"cluster_id"`
  21. }
  22. // Externalize generates an external Project to be shared over REST
  23. func (p *DNSRecord) Externalize() *DNSRecordExternal {
  24. return &DNSRecordExternal{
  25. ExternalURL: fmt.Sprintf("%s.%s", p.SubdomainPrefix, p.RootDomain),
  26. Endpoint: p.Endpoint,
  27. Hostname: p.Hostname,
  28. ClusterID: p.ClusterID,
  29. }
  30. }