https://github.com/amrchnk/advertisement_service
Тестовое задание для backend-стажёра в команду Advertising
https://github.com/amrchnk/advertisement_service
docker docker-compose go postgres
Last synced: 2 months ago
JSON representation
Тестовое задание для backend-стажёра в команду Advertising
- Host: GitHub
- URL: https://github.com/amrchnk/advertisement_service
- Owner: amrchnk
- Created: 2021-08-17T10:28:24.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-08-28T08:48:20.000Z (almost 5 years ago)
- Last Synced: 2025-05-30T20:49:14.296Z (about 1 year ago)
- Topics: docker, docker-compose, go, postgres
- Language: Go
- Homepage:
- Size: 408 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Тестовое задание для backend-стажёра в команду Advertising
## Задача
Необходимо создать сервис для хранения и подачи объявлений. Объявления должны храниться в базе данных. Сервис должен предоставлять API, работающее поверх HTTP в формате JSON.
[Подробнее...](https://github.com/avito-tech/adv-backend-trainee-assignment)
## Архитектура и стек
При написании кода был использован подход "Чистой архитектуры", в соответствии с которым структура приложения была разделена на 4 слоя (находятся в папке pkg):
- **handler** – взаимодействие пользователя с приложением
- **models** – описание структур, с которыми работает приложение
- **repository** – взаимодействие с хранилищем данных
- **service** – бизнес-логика приложения
Использован следующий стек технологий:
- Back-end: Go + библиотеки gin, sqlx для работы с роутами и БД
- БД: PostgreSQL
## Запуск приложения
Перед запуском приложения необходимо запустить файл миграции для создания таблиц в бд:
```
// для применения миграции
migrate -path ./schema -database postgres://postgres:111@localhost:5432/advert?sslmode=disable up
// для отката миграции
migrate -path ./schema -database postgres://postgres:111@localhost:5432/advert?sslmode=disable down
```
Для развертывания приложения используется Docker, в контейнеры упакованы само приложение и БД.
Запуск происходит через docker-compose:
```
//собираем контейнер приложения
docker-compose up --build app
//перезапускаем сборку после инициализации бд
docker-compose up app
```
Для запуска тестов в папке Handler:
```
go test -v
```
[Описание методов сервиса](https://amrchnk.github.io/advertisement_service/)
## Выполненные усложнения
- [x] Юнит тесты (Покрытие >80% в модуле Handler)
- [x] Контейнеризация: есть возможность поднять проект с помощью команды ```docker-compose up```
- [x] Архитектура сервиса описана в виде текста и/или диаграмм
- [x] Структурированное описание методов сервиса.