58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"gestion/models"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
var (
|
|
Redis *redis.Client
|
|
RedisCtx = context.Background()
|
|
)
|
|
|
|
type CommandWithDistance struct {
|
|
CommandID int
|
|
Address string
|
|
Lat float64
|
|
Lng float64
|
|
Distance float64
|
|
EstimatedETA int
|
|
QueueItem models.CommandQueue
|
|
}
|
|
|
|
const (
|
|
// Temps moyen estimé par livraison (en minutes)
|
|
AVG_DELIVERY_TIME = 15
|
|
// Nombre maximum de commandes par livreur
|
|
MAX_COMMANDS_PER_DELIVERYMAN = 10
|
|
)
|
|
|
|
// ============================================
|
|
// INITIALISATION DE REDIS
|
|
// ============================================
|
|
|
|
func InitRedis() {
|
|
host := getEnv("REDIS_HOST", "redis")
|
|
port := getEnv("REDIS_PORT", "6379")
|
|
password := os.Getenv("REDIS_PASSWORD")
|
|
|
|
addr := host + ":" + port
|
|
|
|
Redis = redis.NewClient(&redis.Options{
|
|
Addr: addr,
|
|
Password: password,
|
|
DB: 0,
|
|
})
|
|
|
|
_, err := Redis.Ping(RedisCtx).Result()
|
|
if err != nil {
|
|
log.Fatalf("❌ Erreur connexion Redis: %v", err)
|
|
}
|
|
|
|
log.Println("⚡ Redis connecté")
|
|
}
|