123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package repository
- import (
- "context"
- "github.com/go-nunu/nunu-layout-advanced/internal/model"
- "gorm.io/gorm/clause"
- )
- type GameShieldPublicIpRepository interface {
- GetGameShieldPublicIp(ctx context.Context, id int64) (*model.GameShieldPublicIp, error)
- GetGameShieldPublicUserIp(ctx context.Context, uid int) (string, error)
- AddGameShieldPublicUserIp(ctx context.Context) (string, error)
- UpdateGameShieldPublicUserIp(ctx context.Context, uid int, ip string) error
- }
- func NewGameShieldPublicIpRepository(
- repository *Repository,
- ) GameShieldPublicIpRepository {
- return &gameShieldPublicIpRepository{
- Repository: repository,
- }
- }
- type gameShieldPublicIpRepository struct {
- *Repository
- }
- func (r *gameShieldPublicIpRepository) GetGameShieldPublicIp(ctx context.Context, id int64) (*model.GameShieldPublicIp, error) {
- var gameShieldPublicIp model.GameShieldPublicIp
- return &gameShieldPublicIp, nil
- }
- func (r *gameShieldPublicIpRepository) GetGameShieldPublicUserIp(ctx context.Context, uid int) (string, error) {
- var ip string
- if err := r.DB(ctx).Model(&model.GameShieldPublicIp{}).Select("ip").Where("uid = ?", uid).Scan(&ip).Error; err != nil {
- return "", err
- }
- return ip, nil
- }
- func (r *gameShieldPublicIpRepository) AddGameShieldPublicUserIp(ctx context.Context) (string, error) {
- var ip string
- if err := r.DB(ctx).Model(&model.GameShieldPublicIp{}).Select("ip").
- Where("uid IS NULL").
- Order("RAND()").
- Clauses(clause.Locking{Strength: "UPDATE"}).
- Limit(1).
- Scan(&ip).Error; err != nil {
- return "", err
- }
- return ip, nil
- }
- func (r *gameShieldPublicIpRepository) UpdateGameShieldPublicUserIp(ctx context.Context, uid int, ip string) error {
- if err := r.DB(ctx).Model(&model.GameShieldPublicIp{}).
- Where("uid IS NULL").
- Where("ip = ?", ip).
- Update("uid", uid).Error; err != nil {
- return err
- }
- return nil
- }
|