function categorize()

in scripts/extract_redis_commands_argcounts.php [42:68]


function categorize(array $command, string $commandName): string {
    $minKeyCount = 0;
    $maxKeyCount = 0;
    $minArgCount = 0;
    $maxArgCount = 0;
    $arguments = $command['arguments'] ?? [];
    foreach ($arguments as $arg) {
        $data = categorize_arg($arg, $commandName);
        $minKeyCount += ($data['min_key'] ?? 0);
        $maxKeyCount += ($data['max_key'] ?? 0);
        $minArgCount += ($data['min_arg'] ?? 0);
        $maxArgCount += ($data['max_arg'] ?? 0);
    }
    if (in_array($commandName, ['DEL', 'MGET', 'MSET', 'TOUCH', 'UNLINK'])) {
        return "keyn";
    }
    if ($maxKeyCount > $minKeyCount || $maxArgCount > $minArgCount) {
        // return "key${minKeyCount}_argx";
        return "key1_argx";
    }
    // Assume that
    // min=max for arg and key
    if ($minArgCount > 0 && $minKeyCount >= 2) {
        return "key1_arg" . ($minArgCount + $maxKeyCount - 1);
    }
    return "key${minKeyCount}_arg" . $minArgCount;
}