# Документация API ## Обзор Этот проект представляет собой RESTful API для управления товарами, производителями и пользователями. В качестве ORM используется GORM. ## Структура проекта - **cli/migration.go** - Применение автомиграции в БД. - **contollers/** - Вся бизнес логика, обращения к БД. - **database/connect.go** - Подключение к БД. - **database/models.go** - Модели Gorm. - **brunoTest/** - Коллекция Bruno для тестирования API. - **libs/** - Небольшие функции используемые в разных контроллерах. - **middlewares/authMiddleware.go** - Прослойка для авторизации. - **routes.go** - Описание всех маршрутов. - **types/** - Типы для запросов и ответов на сервер. - **validators/** - Кастомные валидаторы. - **docker-compose.yml** - Файл docker-compose для запуска в контейнере вместе в БД. - **Dockerfile** - Файл для сборки докер контейнера. - **entrypoint.sh** - Входная точка для докер контейнера. Нужна чтобы запустить миграцию в бд перед запуском сервера. - **main.go** - Основной файл. Используется для запуска сервера. ## Endpoints ### Товары - **POST /product** - Создание нового товара. Требуется JSON с данными товара. - **DELETE /product/:id** - Удаление товара по идентификатору. - **GET /product** - Получение списка всех товаров. - **GET /product/:id** - Получение информации о конкретном товаре. - **GET /product/:id/buy** - Покупка товара по идентификатору. ### Производители - **POST /manufacturer** - Создание нового производителя. Требуется JSON с данными производителя. - **DELETE /manufacturer/:id** - Удаление производителя по идентификатору. - **GET /manufacturer** - Получение списка всех производителей. - **PATCH /manufacturer/:id** - Редактирование данных производителя. Требуется JSON с изменениями. ### Пользователи - **POST /registration** - Регистрация нового пользователя. Требуется JSON с данными пользователя. - **POST /login** - Вход пользователя. Требуется JSON с данными для входа. - **GET /user** - Получение данных текущего пользователя. - **PATCH /user** - Редактирование имени пользователя. Требуется JSON с новым именем. - **POST /user/addmoney** - Добавление денег на счет пользователя. Требуется JSON с суммой. - **GET /user/products** - Получение списка купленных пользователем товаров. ## Запуск сервера Сервер запускается в докер контейнере Сначала нужно собрать image командой: ``` docker build -t ravonzz/go-testapi . ``` Затем можно запускать контейнер вместе с БД Postgresql командой: ``` docker-compose up -d ```