# 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