# README
Описание GoStorage v0.15.0
Этот репозиторий содержит описание библиотеки GoStorage.
Статус библиотеки
Библиотека находится в стадии разработки.
Описание библиотеки
Библиотека для работы с хранилищами данных. На данный момент реализованы адаптеры для следующих клиентов:
- postgres (
pgx/v5
); - rabbitmq (
amqp-go/v1
); - redis (
go-redis/v9
+redislock/v0.9
); S3 minio
+FileProvider
;Native File System
+FileProvider
;
Также реализован вспомогательный пакет для тестирования приложения без необходимости
разворачивания инфраструктуры (БД, S3 и т.д.), для этого используется библиотека testcontainers
.
На базе этой библиотеки подготовлены следующие контейнеры:
- postgres;
- redis;
- minio;
Подключение библиотеки
go get -u github.com/mondegor/[email protected]
Установка библиотеки для её локальной разработки
- Выбрать рабочую директорию, где должна быть расположена библиотека
mkdir go-storage && cd go-storage
// создать и перейти в директорию проектаgit clone [email protected]:mondegor/go-storage.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 утилиты.