dns.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. MatchDomains datatypes.JSONSlice[string] `gorm:"match_domains" json:"match_domains"`
  16. Tags datatypes.JSONMap `gorm:"tags" json:"tags"`
  17. Nodes datatypes.JSONMap `gorm:"nodes" json:"nodes"`
  18. Status bool `gorm:"status" json:"status"`
  19. CreatedBy string `gorm:"created_by" json:"created_by"`
  20. CreatedAt time.Time `gorm:"created_at" json:"created_at"`
  21. UpdatedAt time.Time `gorm:"updated_at" json:"updated_at"`
  22. }
  23. func (ns *Nameserver) Get(ctx context.Context) error {
  24. return db.FromContext(ctx).Model(&Nameserver{}).First(&ns).Where("id = ?", ns.ID).Error
  25. }
  26. func (ns *Nameserver) Update(ctx context.Context) error {
  27. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(&ns).Error
  28. }
  29. func (ns *Nameserver) Create(ctx context.Context) error {
  30. return db.FromContext(ctx).Model(&Nameserver{}).Create(&ns).Error
  31. }
  32. func (ns *Nameserver) ListByNetwork(ctx context.Context) (dnsli []Nameserver, err error) {
  33. err = db.FromContext(ctx).Model(&Nameserver{}).Where("network_id = ?", ns.NetworkID).Find(&dnsli).Error
  34. return
  35. }
  36. func (ns *Nameserver) Delete(ctx context.Context) error {
  37. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Delete(&ns).Error
  38. }
  39. func (ns *Nameserver) UpdateStatus(ctx context.Context) error {
  40. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(map[string]any{
  41. "status": ns.Status,
  42. }).Error
  43. }
  44. func (ns *Nameserver) UpdateMatchAll(ctx context.Context) error {
  45. return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(map[string]any{
  46. "match_all": ns.MatchAll,
  47. }).Error
  48. }