Categorygithub.com/mondegor/go-webcore
module
0.26.1
Repository: https://github.com/mondegor/go-webcore.git
Documentation: pkg.go.dev

# README

Описание GoWebCore v0.26.1

Этот репозиторий содержит описание библиотеки GoWebCore.

Статус библиотеки

Библиотека находится в стадии разработки.

Описание библиотеки

Библиотека с базовой функциональностью для разработки web сервисов, в которую входят:

  • общие интерфейсы, такие как logger, router, validator и другие, которые могут быть реализованы уже в конкретных проектах;
  • адаптеры логгеров: стандартного и rs/zerolog;
  • адаптер стандартного http сервера;
  • адаптеры http роутеров:
    • go-chi/chi/v5;
    • julienschmidt/httprouter;
  • адаптер cors (rs/cors);
  • адаптер валидатора (go-playground/v10);
  • адаптер для отправки ошибок (sentry);
  • реализация метрик в mrprometheus.ObserveRequest;
  • многопоточный сервис запуска задач по расписанию (TaskScheduler);
  • многопоточный сервис обработки сообщений (MessageProcessor);
  • работа с пользовательскими разрешениями и привилегиями (ролевая модель);
  • разграничение доступа к модулям из различных API;
  • часто используемые программные, системные и пользовательские ошибки, которые возникают в разных слоях программы;
  • пакеты с часто используемыми функциями: генерация токенов, преобразование IP и т.д.;
  • парсеры для некоторых типов данных, которые поступают из http запросов;
  • парсеры для работы с файлами и изображениями;

Подключение библиотеки к проекту

go get -u github.com/mondegor/[email protected]

Установка библиотеки для её локальной разработки

  • Выбрать рабочую директорию, где должна быть расположена библиотека
  • mkdir go-webcore && cd go-webcore // создать и перейти в директорию проекта
  • git clone [email protected]:mondegor/go-webcore.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 утилиты.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author