main

Рекурсия для основных операций

Добавил рекурсию ко всем основным операциям в режиме tool'а. В "dumb"-вариации заработало прям сразу с полпинка, аж сам в шоке.

В "smart" пришлось посидеть над багами, и я подозреваю, что выловил ещё не всё. Также, пришлось предварительно посидеть над рефакторингом функций, но это мелочи.

Кроме того, я ускорил некоторые операции, например случаи, когда из набора тегов ничего не удаляется, т.к. указанного тега нет, и базу обновлять не нужно.

Что приятно удивило -- "dumb"-версия работает очень быстро, обход двух тысяч файлов и добавление к ним одного тега - около двух сотых секунды. Ожидал где-то порядка 0.04-0.10 c. Удаление не до пустого набора - ~0.02с.

"smart"-версия уже помедленнее, порядка двух-трёх секунд. Но там не включены транзакции в базе, поэтому это нормально и ожидаемо.