private function getFileNameIndex(FilePathValue $path, string $fileName, string $extension) : int { $nameRegex = preg_quote($fileName) . '(_(?P<idx>[0-9]+))?\\.' . preg_quote($extension ?? ''); $query = $this->executeSql(' SELECT name FROM files WHERE path = :path AND name REGEXP :name ORDER BY name ASC ', ['path' => $path->toString(), 'name' => $nameRegex]); if ($query->rowCount() === 0) { return 0; } $max = 0; while ($row = $query->fetchColumn()) { if ($row === $fileName . '.' . $extension) { continue; } preg_match('#' . $nameRegex . '#', $row, $match); $max = max($max, intval($match['idx'], 1)); } return $max + 1; }