21.04.2023
🔜 Скоро! — @SadFavBot v0.4.1
Я не пытаюсь подстраиваться ни под какой график, но на удивление само собой получается релизить примерно по длительности стандартных спринтов, так как с прошлого релиза прошло около двух недель: чуть больше с 0.3.4 и чуть меньше с версии 0.4.0, раскатанной 9 апреля, в которую, впрочем, вошло только два критических исправления ошибок и полная переделка стартового диалога вместе с системой вывода справочных сообщений (которые печатаются при вызове команды /help), из-за чего я особо её и не афишировал. Она же положила начало и большой работе по написанию документации на двух языках (русском и английском), что позволило привести в порядок терминологию, которая вольно плавала как по коду, так и в текстовках, называя одни вещи разными именами и разные вещи одними именами.
Этот же релиз на самом деле не привносит ничего нового с точки зрения пользователя (кроме исправления пары багов). Но он очень важен с точки развития проекта, так как закрывает огромный пласт накопившегося технического долга. Я наконец-то отделил взаимодействие с БД в слой отдельных сервисов, доработал логирование, перешёл на Go 1.20 и использование пула подключений к Постгресу, переименовал таблицы и поля в БД, которые со временем перестали соответствовать своему назначению и новой терминологии, пересмотрел некоторые интерфейсы, сделав код, надеюсь, более понятным и предсказуемым.
Но во всём этом огромном рефакторинге таится и большая опасность: поскольку была переписана половина всей кодовой базы, то что-то могло сломаться и остаться незамеченным во время автоматизированного и ручного тестирования. Я надеюсь, что установка обновления пройдёт как по маслу, но не могу исключать и возникновения каких-либо неприятных проблем. Так что хочу предупредить о возможной недоступности бота при плановом обновлении, которое назначено на 22.04.2023 в 0:10.
Ещё пару слов хотел сказать про взаимодействие с БД. Как оказалось, тут всё ещё нет идеального решения. ORMы я ненавижу просто в силу их сложности и непредсказуемости. Мне советовали использовать Squirrel для генерации запросов и sqlx для мапинга результата на структуры. От последнего пришлось сразу отказаться, так как он работает по стандартному интерфейсу database/sql, а я как раз хотел перейти на более удобное, быстрое и эффективное прямое использование pgx. С конструктором запросов я поигрался и не понял прикола: получается какая-то жуткая мешанина из гошного кода и строк на чистом SQL без каких-либо явных преимуществ, а вложенные запросы превращаются вообще в какой-то кошмар. В результате плюнул и оставил запросы как есть, просто обособив их в отдельные сервисы.
Также я обновил и дополнил ряд своих паков. Можете доустановить новые мемы 😊


