dns.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package schema
  2. import (
  3. "context"
  4. "time"
  5. "github.com/gravitl/netmaker/db"
  6. "gorm.io/datatypes"
  7. )
  8. type Nameserver struct {
  9. ID string `gorm:"primaryKey" json:"id"`
  10. Name string `gorm:"name" json:"name"`
  11. NetworkID string `gorm:"network_id" json:"network_id"`
  12. Description string `gorm:"description" json:"description"`
  13. Servers datatypes.JSONSlice[string] `gorm:"servers" json:"servers"`
  14. MatchAll bool `gorm:"match_all" json:"match_all"`
  15. Domains datatypes.JSONSlice[NameserverDomain] `gorm:"domains" json:"domains"`
  16. // TODO: deprecate
  17. MatchDomains datatypes.JSONSlice[string] `gorm:"match_domains" json:"match_domains"`
  18. Tags datatypes.JSONMap `gorm:"tags" json:"tags"`
  19. Nodes datatypes.JSONMap `gorm:"nodes" json:"nodes"`
  20. Status bool `gorm:"status" json:"status"`
  21. CreatedBy string `gorm:"created_by" json:"created_by"`
  22. CreatedAt time.Time `gorm:"created_at" json:"created_at"`
  23. UpdatedAt time.Time `gorm:"updated_at" json:"updated_at"`
  24. }
  25. type NameserverDomain struct {
  26. Domain string `json:"domain"`
  27. IsSearchDomain bool `json:"is_search_domain"`
  28. }
  29. func (ns *Nameserver) Get(ctx context.Context) error {
  30. return db.FromContext(ctx).Model(&Nameserver{}).First(&ns).Where("id = ?", ns.ID).Error
  31. }
  32. func (ns *Nameserver) Update(ctx context.Context) error {
  33. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(&ns).Error
  34. }
  35. func (ns *Nameserver) Create(ctx context.Context) error {
  36. return db.FromContext(ctx).Model(&Nameserver{}).Create(&ns).Error
  37. }
  38. func (ns *Nameserver) ListByNetwork(ctx context.Context) (dnsli []Nameserver, err error) {
  39. err = db.FromContext(ctx).Model(&Nameserver{}).Where("network_id = ?", ns.NetworkID).Find(&dnsli).Error
  40. return
  41. }
  42. func (ns *Nameserver) Delete(ctx context.Context) error {
  43. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Delete(&ns).Error
  44. }
  45. func (ns *Nameserver) UpdateStatus(ctx context.Context) error {
  46. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(map[string]any{
  47. "status": ns.Status,
  48. }).Error
  49. }
  50. func (ns *Nameserver) UpdateMatchAll(ctx context.Context) error {
  51. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(map[string]any{
  52. "match_all": ns.MatchAll,
  53. }).Error
  54. }