Описание GoComponents v0.8.2
Этот репозиторий содержит описание библиотеки GoComponents.
Статус библиотеки
Библиотека находится в стадии разработки.
Описание библиотеки
Библиотека содержит набор компонентов повторного использования:
- Компонент
mrsettings для хранения и получения произвольных настроек с различными вариантами, в том числе и с использованием кэша;
- Компонент
mrordering упорядочивания записей на основе двусвязного списка,
позволяет встраиваться в произвольные таблицы БД;
- Очередь элементов
mrqueue основанной на БД с возможностями:
- захвата ограниченного кол-ва элементов для их обработки;
- повторной обработки элементов при возникновении ошибок;
- отложенной обработки элементов;
- Компонент
mrmailer для массовой отправки сообщений различными провайдерами.
Основан на очереди элементов mrqueue, которая даёт все её преимущества;
- Компонент
mrnotifier для отправки персонализированных уведомлений на основе шаблонов.
Также основан на очереди элементов mrqueue;
Подключение библиотеки
go get -u github.com/mondegor/go-components@v0.8.2
Установка библиотеки для её локальной разработки
- Выбрать рабочую директорию, где должна быть расположена библиотека
mkdir go-components && cd go-components // создать и перейти в директорию проекта
git clone git@github.com:mondegor/go-components.git .
cp .env.dist .env
mrcmd go-dev deps // загрузка зависимостей проекта
- Для работы утилит
gofumpt, goimports, mockgen необходимо в .env проверить
значения переменных GO_DEV_TOOLS_INSTALL_* и запустить mrcmd go-dev install-tools
Консольные команды используемые при разработке библиотеки
Перед запуском консольных скриптов библиотеки необходимо скачать и установить утилиту Mrcmd.
Инструкция по её установке находится здесь
mrcmd go-dev help // выводит список всех доступных go-dev команд;
mrcmd go-dev generate // генерирует go файлы через встроенный механизм go:generate;
mrcmd go-dev gofumpt-fix // исправляет форматирование кода (gofumpt -l -w -extra ./);
mrcmd go-dev goimports-fix // исправляет imports, если это требуется (goimports -d -local ${GO_DEV_IMPORTS_LOCAL_PREFIXES} ./);
mrcmd golangci-lint check // запускает линтеров для проверки кода (на основе .golangci.yaml);
mrcmd go-dev test // запускает тесты библиотеки;
mrcmd go-dev test-report // запускает тесты библиотеки с формированием отчёта о покрытии кода (test-coverage-full.html);
mrcmd plantuml build-all // генерирует файлы изображений из .puml подробнее;
Короткий вариант выше приведённых команд (Makefile)
make deps // аналог mrcmd go-dev deps
make generate // аналог mrcmd go-dev generate
make fmt // аналог mrcmd go-dev gofumpt-fix
make fmti // аналог mrcmd go-dev goimports-fix
make lint // аналог mrcmd golangci-lint check
make test // аналог mrcmd go-dev test
make test-report // аналог mrcmd go-dev test-report
make plantuml // аналог mrcmd plantuml build-all
Чтобы расширить список команд, необходимо создать Makefile.mk и добавить
туда дополнительные команды, все они будут добавлены в единый список команд make утилиты.
Примеры архитектуры системы с использованием библиотеки go-components
Пакет mrsettings

Подсистема планировки задач

Сервис использующий пакет mrsettings

Верхнеуровневая архитектура
