Code re-organization
Some checks failed
Go Tests / build (1.22.x) (push) Failing after 1m27s

This commit is contained in:
2025-01-26 18:20:45 -05:00
parent b93d1c29b8
commit 85938a2def
21 changed files with 685 additions and 348 deletions

65
redis/client.go Normal file
View File

@@ -0,0 +1,65 @@
package redis
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
"github.com/siteworxpro/img-proxy-url-generator/config"
"strconv"
)
type Redis struct {
initialized redisStatus
client *redis.Client
}
type redisStatus uint8
const (
redisStatusUninitialized redisStatus = iota
redisStatusInitialized
)
var singleton *Redis
func New(config *config.Config) (*Redis, error) {
if singleton != nil && singleton.initialized == redisStatusUninitialized {
return singleton, nil
}
db, err := strconv.ParseInt(config.Redis.DB, 10, 64)
if err != nil {
db = 0
}
port := config.Redis.Port
if port == "" {
port = "6379"
}
rdb := redis.NewClient(&redis.Options{
Addr: fmt.Sprintf("%s:%s", config.Redis.Host, port),
DB: int(db),
Password: config.Redis.Password,
})
_, err = rdb.Ping(context.Background()).Result()
if err != nil {
return nil, fmt.Errorf("failed to connect to redis: %w", err)
}
singleton = &Redis{
initialized: redisStatusInitialized,
client: rdb,
}
return singleton, nil
}
func (r *Redis) GetClient() *redis.Client {
return r.client
}
func (r *Redis) Close() error {
return r.client.Close()
}