gameshieldbackend.go 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package repository
  2. import (
  3. "context"
  4. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  6. )
  7. type GameShieldBackendRepository interface {
  8. GetGameShieldBackendById(ctx context.Context, id int64) (*model.GameShieldBackend, error)
  9. AddGameShieldBackend(ctx context.Context, req *model.GameShieldBackend) error
  10. EditGameShieldBackend(ctx context.Context, req *v1.GameShieldBackendRequest) error
  11. DeleteGameShieldBackend(ctx context.Context, id int64) error
  12. GetGameShieldBackendByHostId(ctx context.Context, hostId int) ([]model.GameShieldBackend, error)
  13. GetGameShieldBackendConfigCountByHostId(ctx context.Context, hostId int) (*v1.GameShieldHostBackendConfigResponse, error)
  14. GetGameShieldBackendSourceMachineIpByHostId(ctx context.Context, hostId int) ([]string, error)
  15. }
  16. func NewGameShieldBackendRepository(
  17. repository *Repository,
  18. ) GameShieldBackendRepository {
  19. return &gameShieldBackendRepository{
  20. Repository: repository,
  21. }
  22. }
  23. type gameShieldBackendRepository struct {
  24. *Repository
  25. }
  26. func (r *gameShieldBackendRepository) GetGameShieldBackendById(ctx context.Context, id int64) (*model.GameShieldBackend, error) {
  27. var gameShieldBackend model.GameShieldBackend
  28. if err := r.DB(ctx).Where("id = ?", id).First(&gameShieldBackend).Error; err != nil {
  29. return nil, err
  30. }
  31. return &gameShieldBackend, nil
  32. }
  33. func (r *gameShieldBackendRepository) AddGameShieldBackend(ctx context.Context, req *model.GameShieldBackend) error {
  34. if err := r.DB(ctx).Create(&req).Error; err != nil {
  35. return err
  36. }
  37. return nil
  38. }
  39. func (r *gameShieldBackendRepository) EditGameShieldBackend(ctx context.Context, req *v1.GameShieldBackendRequest) error {
  40. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("id = ?", req.Id).Updates(req).Error; err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. func (r *gameShieldBackendRepository) DeleteGameShieldBackend(ctx context.Context, id int64) error {
  46. if err := r.DB(ctx).Delete(&model.GameShieldBackend{}, id).Where("id = ?", id).Error; err != nil {
  47. return err
  48. }
  49. return nil
  50. }
  51. func (r *gameShieldBackendRepository) GetGameShieldBackendByHostId(ctx context.Context, hostId int) ([]model.GameShieldBackend, error) {
  52. var gameShieldBackend []model.GameShieldBackend
  53. if err := r.DB(ctx).Where("host_id = ?", hostId).Order("key_sort DESC").Find(&gameShieldBackend).Error; err != nil {
  54. return nil, err
  55. }
  56. return gameShieldBackend, nil
  57. }
  58. func (r *gameShieldBackendRepository) GetGameShieldBackendConfigCountByHostId(ctx context.Context, hostId int) (*v1.GameShieldHostBackendConfigResponse, error) {
  59. var res v1.GameShieldHostBackendConfigResponse
  60. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Count(&res.RuleEntriesCount).Error; err != nil {
  61. return nil, err
  62. }
  63. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Distinct("source_machine_ip").Count(&res.SourceMachinesCount).Error; err != nil {
  64. return nil, err
  65. }
  66. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Where("max_bandwidth = ?", 1).Count(&res.MaxBandwidthCount).Error; err != nil {
  67. return nil, err
  68. }
  69. return &res, nil
  70. }
  71. func (r *gameShieldBackendRepository) GetGameShieldBackendSourceMachineIpByHostId(ctx context.Context, hostId int) ([]string, error) {
  72. var res []string
  73. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Distinct("source_machine_ip").Pluck("source_machine_ip", &res).Error; err != nil {
  74. return nil, err
  75. }
  76. return res, nil
  77. }