gameshieldbackend.go 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 int, hostId int) 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. GetGameShieldBackendByHostIdAndSourceMachineIp(ctx context.Context, hostId int, sourceMachineIp string) ([]model.GameShieldBackend, error)
  16. }
  17. func NewGameShieldBackendRepository(
  18. repository *Repository,
  19. ) GameShieldBackendRepository {
  20. return &gameShieldBackendRepository{
  21. Repository: repository,
  22. }
  23. }
  24. type gameShieldBackendRepository struct {
  25. *Repository
  26. }
  27. func (r *gameShieldBackendRepository) GetGameShieldBackendById(ctx context.Context, id int64) (*model.GameShieldBackend, error) {
  28. var gameShieldBackend model.GameShieldBackend
  29. if err := r.DB(ctx).Where("id = ?", id).First(&gameShieldBackend).Error; err != nil {
  30. return nil, err
  31. }
  32. return &gameShieldBackend, nil
  33. }
  34. func (r *gameShieldBackendRepository) AddGameShieldBackend(ctx context.Context, req *model.GameShieldBackend) error {
  35. if err := r.DB(ctx).Create(&req).Error; err != nil {
  36. return err
  37. }
  38. return nil
  39. }
  40. func (r *gameShieldBackendRepository) EditGameShieldBackend(ctx context.Context, req *v1.GameShieldBackendRequest) error {
  41. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("id = ?", req.Id).Updates(req).Error; err != nil {
  42. return err
  43. }
  44. return nil
  45. }
  46. func (r *gameShieldBackendRepository) DeleteGameShieldBackend(ctx context.Context, id int, hostId int) error {
  47. if err := r.DB(ctx).Where("id = ? AND host_id = ?", id, hostId).Delete(&model.GameShieldBackend{}).Error; err != nil {
  48. return err
  49. }
  50. return nil
  51. }
  52. func (r *gameShieldBackendRepository) GetGameShieldBackendByHostId(ctx context.Context, hostId int) ([]model.GameShieldBackend, error) {
  53. var gameShieldBackend []model.GameShieldBackend
  54. if err := r.DB(ctx).Where("host_id = ?", hostId).Order("key_sort DESC").Find(&gameShieldBackend).Error; err != nil {
  55. return nil, err
  56. }
  57. return gameShieldBackend, nil
  58. }
  59. func (r *gameShieldBackendRepository) GetGameShieldBackendConfigCountByHostId(ctx context.Context, hostId int) (*v1.GameShieldHostBackendConfigResponse, error) {
  60. var res v1.GameShieldHostBackendConfigResponse
  61. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Count(&res.RuleEntriesCount).Error; err != nil {
  62. return nil, err
  63. }
  64. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Distinct("source_machine_ip").Count(&res.SourceMachinesCount).Error; err != nil {
  65. return nil, err
  66. }
  67. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Where("max_bandwidth = ?", 1).Count(&res.MaxBandwidthCount).Error; err != nil {
  68. return nil, err
  69. }
  70. return &res, nil
  71. }
  72. func (r *gameShieldBackendRepository) GetGameShieldBackendSourceMachineIpByHostId(ctx context.Context, hostId int) ([]string, error) {
  73. var res []string
  74. if err := r.DB(ctx).Model(&model.GameShieldBackend{}).Where("host_id = ?", hostId).Distinct("source_machine_ip").Pluck("source_machine_ip", &res).Error; err != nil {
  75. return nil, err
  76. }
  77. return res, nil
  78. }
  79. func (r *gameShieldBackendRepository) GetGameShieldBackendByHostIdAndSourceMachineIp(ctx context.Context, hostId int, sourceMachineIp string) ([]model.GameShieldBackend, error) {
  80. var res []model.GameShieldBackend
  81. if err := r.DB(ctx).Where("host_id = ? AND source_machine_ip = ?", hostId, sourceMachineIp).Find(&res).Error; err != nil {
  82. return nil, err
  83. }
  84. return res, nil
  85. }