go-components

module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2024 License: Apache-2.0

README

Описание 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

image

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

image

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

image

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

image

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL