package repository import ( "fmt" "math/rand" "smpp-otp/pkg/lib/logger" "time" "github.com/go-redis/redis" ) type OTPRepository struct { Client *redis.Client logger *logger.Loggers } func NewOTPRepository(client *redis.Client, logger *logger.Loggers) *OTPRepository { return &OTPRepository{ Client: client, logger: logger, } } func GenerateOTP() string { r := rand.New(rand.NewSource(time.Now().UnixNano())) otp := fmt.Sprintf("%06d", r.Intn(1000000)) return otp } func (r *OTPRepository) SaveOTP(phoneNumber string, otp string) error { err := r.Client.Watch(func(tx *redis.Tx) error { err := tx.Set(phoneNumber, otp, 0).Err() if err != nil { r.logger.ErrorLogger.Error("Error setting up values into redis: %v", err) return err } return nil }, phoneNumber) if err != nil { return err } return nil }