package repository import ( "context" "github.com/go-nunu/nunu-layout-advanced/internal/model" ) type GameShieldRepository interface { GetGameShieldById(ctx context.Context, id int64) (*model.GameShield, error) GetGameShieldDuplicateName(ctx context.Context, appName string, uid int) (int64, error) AddGameShield(ctx context.Context, gameShield *model.GameShield) error UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error DeleteGameShield(ctx context.Context, ruleId int) error GetGameShieldIsBuy(ctx context.Context, uid int64) (int64, error) GetGameShieldNextduedate(ctx context.Context, uid int64, productID string) (string, error) GetGameShieldNameByDunName(ctx context.Context, appName string) (string, error) GetGameShieldIdByDunName(ctx context.Context, id int64) (string, error) GetGameShieldRuleIdByAppName(ctx context.Context, appName string) (int, error) UpdateGameShieldByHostId(ctx context.Context, gameShield *model.GameShield) error GetGameShieldByHostId(ctx context.Context, hostId int) (*model.GameShield, error) GetHostById(ctx context.Context, id int) (string, error) } func NewGameShieldRepository( repository *Repository, ) GameShieldRepository { return &gameShieldRepository{ Repository: repository, } } type gameShieldRepository struct { *Repository } func (r *gameShieldRepository) GetGameShieldById(ctx context.Context, id int64) (*model.GameShield, error) { var res model.GameShield if err := r.DB(ctx).Where("id = ?", id).First(&res).Error; err != nil { return nil, err } return &res, nil } func (r *gameShieldRepository) GetGameShieldDuplicateName(ctx context.Context, appName string, uid int) (int64, error) { var count int64 if err := r.DB(ctx).Model(&model.GameShield{}).Where("app_name = ?", appName).Where("uid = ?", uid).Count(&count).Error; err != nil { return 0, err } return count, nil } func (r *gameShieldRepository) AddGameShield(ctx context.Context, gameShield *model.GameShield) error { if err := r.DB(ctx).Create(gameShield).Error; err != nil { return err } return nil } func (r *gameShieldRepository) UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error { if err := r.DB(ctx).Where("host_id = ?", gameShield.HostId).Updates(gameShield).Error; err != nil { return err } return nil } func (r *gameShieldRepository) DeleteGameShield(ctx context.Context, ruleId int) error { if err := r.DB(ctx).Where("rule_id = ?", ruleId).Delete(&model.GameShield{}).Error; err != nil { return err } return nil } func (r *gameShieldRepository) GetGameShieldIsBuy(ctx context.Context, uid int64) (int64, error) { var count int64 if err := r.DB(ctx).Table("shd_host"). Where("domainstatus = ?", "Active"). Where("productid = ?", 67). Where("uid = ?", uid). Count(&count).Error; err != nil { return 0, err } return count, nil } func (r *gameShieldRepository) GetGameShieldNextduedate(ctx context.Context, uid int64, productID string) (string, error) { var nextDueDate string err := r.DB(ctx).Table("shd_host"). Select("nextduedate"). Where("id = ?", productID). Where("uid = ?", uid). Scan(&nextDueDate).Error if err != nil { return "", err } return nextDueDate, nil } func (r *gameShieldRepository) GetGameShieldNameByDunName(ctx context.Context, appName string) (string, error) { var res string if err := r.DB(ctx).Model(&model.GameShield{}). Where("app_name = ?", appName). Pluck("dun_name", &res).Error; err != nil { return "", err } return res, nil } func (r *gameShieldRepository) GetGameShieldIdByDunName(ctx context.Context, id int64) (string, error) { var res string if err := r.DB(ctx).Model(&model.GameShield{}). Where("id = ?", id). Pluck("dun_name", &res).Error; err != nil { return "", err } return res, nil } func (r *gameShieldRepository) GetGameShieldRuleIdByAppName(ctx context.Context, appName string) (int, error) { var res int if err := r.DB(ctx).Model(&model.GameShield{}). Where("app_name = ?", appName). Pluck("rule_id", &res).Error; err != nil { return 0, err } return res, nil } func (r *gameShieldRepository) UpdateGameShieldByHostId(ctx context.Context, req *model.GameShield) error { if err := r.DB(ctx).Where("host_id = ?", req.HostId).Updates(req).Error; err != nil { return err } return nil } func (r *gameShieldRepository) GetGameShieldByHostId(ctx context.Context, hostId int) (*model.GameShield, error) { var res model.GameShield if err := r.DB(ctx).Where("host_id = ?", hostId).First(&res).Error; err != nil { return nil, err } return &res, nil } func (r *gameShieldRepository) GetHostById(ctx context.Context, id int) (string, error) { var res string if err := r.DB(ctx).Table("shd_host"). Where("id = ?", id). Pluck("domain", &res).Error; err != nil { return "", err } return res, nil }