package ratelimit

import (
	"context"
	"time"

	"tm/pkg/redis"
)

// Allow returns whether the request is within limit for the given key.
func Allow(ctx context.Context, client redis.Client, key string, limit int64, window time.Duration) (bool, error) {
	if client == nil {
		return true, nil
	}

	count, err := client.IncrWithExpire(ctx, key, window)
	if err != nil {
		return false, err
	}

	return count <= limit, nil
}
