ms-catalog

module
v0.0.0-...-a84dc14 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2026 License: MIT

README

ms-catalog

CI codecov Go Report Card Go version License

REST-микросервис управления каталогом товаров на Go. Часть платформы selfshop-dev.

Обзор

ms-catalog реализует полный жизненный цикл товара: создание, обновление, управление статусом, мягкое удаление и постраничный просмотр активных товаров. Сервис построен по принципу чистой архитектуры с явным разделением на слои domain, usecase, handler и storage.

Подробнее об архитектуре — в docs/ARCHITECTURE.md.
Полная спецификация API — в docs/API.md.
Обоснование технологических решений — в docs/DECISIONS.

Возможности
  • CRUD для товаров с поддержкой статусов active, inactive, draft, archived
  • Поиск по UUID и slug
  • Пагинированный список активных товаров
  • Валидация на уровне домена и на уровне HTTP-запроса
  • RFC 9457 problem details для всех ошибочных ответов
  • Структурированное логирование через zap с runtime-управлением уровнем
  • Health-эндпоинты /health/alive и /health/ready
  • Swagger UI в dev-режиме на /swagger
  • Hot-reload в dev-окружении через air
Быстрый старт
# Клонировать репозиторий
git clone https://github.com/selfshop-dev/ms-catalog
cd ms-catalog

# Скопировать и заполнить переменные окружения
cp .env.example .env

# Запустить dev-окружение с hot-reload
make dev

# Применить миграции
make mig-apply

# Открыть Swagger UI
open http://localhost:8080/swagger

Конфигурация

Сервис конфигурируется через переменные окружения с префиксом INIT__. Двойное подчёркивание __ — разделитель вложенности (INIT__DB__DSNdb.dsn).

Переменная По умолчанию Описание
INIT__APP__NAME my.ms-todo Имя сервиса в логах
INIT__APP__RUNMODE prod Режим: dev или prod
INIT__LOG__MIN_LEVEL info Уровень логирования
INIT__LOG__FORMAT auto Формат: json, console, auto
INIT__ENTRY__HTTP__PORT TCP-порт сервера (обязательно)
INIT__ENTRY__HTTP__READ_TIMEOUT 10s Таймаут чтения запроса
INIT__ENTRY__HTTP__REQUEST_TIMEOUT 15s Дедлайн контекста обработчика
INIT__ENTRY__HTTP__WRITE_TIMEOUT 20s Таймаут записи ответа
INIT__ENTRY__HTTP__IDLE_TIMEOUT 90s Keep-alive таймаут
INIT__DB__DSN PostgreSQL DSN (обязательно)
INIT__DB__MAX_CONNS 10 Максимальный размер пула
INIT__DB__MIN_CONNS 5 Минимальный размер пула
INIT__DB__MAX_CONN_LIFETIME 5m Максимальное время жизни соединения
INIT__DB__MAX_CONN_IDLE_TIME 30s Максимальное время простоя соединения
Разработка

Подробнее о рабочем процессе и правилах оформления коммитов — в CONTRIBUTING.md.

make test     # unit-тесты с покрытием
make test-e2e # end-to-end тесты (требует Docker)

make lint # статический анализ (golangci-lint)

make sqlc-gen # регенерировать Go-код из SQL
make swag-gen # регенерировать OpenAPI spec
make code-gen # go generate ./...

Лицензия

MIT © 2026-present selfshop-dev

Directories

Path Synopsis
cmd
ms-catalog command
@title selfshop-dev/ms-catalog API @version 0.1.0-dev @description REST API для управления каталогом товаров и категорий.
@title selfshop-dev/ms-catalog API @version 0.1.0-dev @description REST API для управления каталогом товаров и категорий.
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
internal
app
pkg
db

Jump to

Keyboard shortcuts

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