egress.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package schema
  2. import (
  3. "context"
  4. "time"
  5. "github.com/gravitl/netmaker/db"
  6. "gorm.io/datatypes"
  7. )
  8. const egressTable = "egresses"
  9. type Egress struct {
  10. ID string `gorm:"primaryKey" json:"id"`
  11. Name string `gorm:"name" json:"name"`
  12. Network string `gorm:"network" json:"network"`
  13. Description string `gorm:"description" json:"description"`
  14. Nodes datatypes.JSONMap `gorm:"nodes" json:"nodes"`
  15. Tags datatypes.JSONMap `gorm:"tags" json:"tags"`
  16. Range string `gorm:"range" json:"range"`
  17. Nat bool `gorm:"nat" json:"nat"`
  18. //IsInetGw bool `gorm:"is_inet_gw" json:"is_internet_gateway"`
  19. Status bool `gorm:"status" json:"status"`
  20. CreatedBy string `gorm:"created_by" json:"created_by"`
  21. CreatedAt time.Time `gorm:"created_at" json:"created_at"`
  22. UpdatedAt time.Time `gorm:"updated_at" json:"updated_at"`
  23. }
  24. func (e *Egress) Table() string {
  25. return egressTable
  26. }
  27. func (e *Egress) Get(ctx context.Context) error {
  28. return db.FromContext(ctx).Table(e.Table()).First(&e).Where("id = ?", e.ID).Error
  29. }
  30. func (e *Egress) Update(ctx context.Context) error {
  31. return db.FromContext(ctx).Table(e.Table()).Where("id = ?", e.ID).Updates(&e).Error
  32. }
  33. func (e *Egress) UpdateNatStatus(ctx context.Context) error {
  34. return db.FromContext(ctx).Table(e.Table()).Where("id = ?", e.ID).Updates(map[string]any{
  35. "nat": e.Nat,
  36. }).Error
  37. }
  38. func (e *Egress) UpdateEgressStatus(ctx context.Context) error {
  39. return db.FromContext(ctx).Table(e.Table()).Where("id = ?", e.ID).Updates(map[string]any{
  40. "status": e.Status,
  41. }).Error
  42. }
  43. func (e *Egress) DoesEgressRouteExists(ctx context.Context) error {
  44. return db.FromContext(ctx).Table(e.Table()).Where("range = ?", e.Range).First(&e).Error
  45. }
  46. func (e *Egress) Create(ctx context.Context) error {
  47. return db.FromContext(ctx).Table(e.Table()).Create(&e).Error
  48. }
  49. func (e *Egress) ListByNetwork(ctx context.Context) (egs []Egress, err error) {
  50. err = db.FromContext(ctx).Table(e.Table()).Where("network = ?", e.Network).Find(&egs).Error
  51. return
  52. }
  53. func (e *Egress) Count(ctx context.Context) (int, error) {
  54. var count int64
  55. err := db.FromContext(ctx).Model(&Egress{}).Count(&count).Error
  56. return int(count), err
  57. }
  58. func (e *Egress) Delete(ctx context.Context) error {
  59. return db.FromContext(ctx).Table(e.Table()).Where("id = ?", e.ID).Delete(&e).Error
  60. }