Описание GoComponents v0.8.0
Этот репозиторий содержит описание библиотеки GoComponents.
Статус библиотеки
Библиотека находится в стадии разработки.
Описание библиотеки
Библиотека содержит набор компонентов повторного использования:
- Компонент
mrsettings
для хранения и получения произвольных настроек с различными вариантами, в том числе и с использованием кэша;
- Компонент
mrordering
упорядочивания записей на основе двусвязного списка,
позволяет встраиваться в произвольные таблицы БД;
- Очередь элементов
mrqueue
основанной на БД с возможностями:
- захвата ограниченного кол-ва элементов для их обработки;
- повторной обработки элементов при возникновении ошибок;
- отложенной обработки элементов;
- Компонент
mrmailer
для массовой отправки сообщений различными провайдерами.
Основан на очереди элементов mrqueue
, которая даёт все её преимущества;
- Компонент
mrnotifier
для отправки персонализированных уведомлений на основе шаблонов.
Также основан на очереди элементов mrqueue
;
Подключение библиотеки
go get -u github.com/mondegor/go-components@v0.8.0
Установка библиотеки для её локальной разработки
- Выбрать рабочую директорию, где должна быть расположена библиотека
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
Верхнеуровневая архитектура