Skip to content

Enriching information about persons service on Go

Notifications You must be signed in to change notification settings

Japsty/EM_test_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание от EffectiveMobile Backend

Сервис дополнения пользователей информацией

Содержание

  1. Запуск
  2. Доступные методы

Запуск

Обычный запуск

  docker-compose up

Чистый запуск

  docker rm $(docker ps -a -q) && docker volume prune -f
  docker rmi -f em_test_task
  docker-compose up

Доступные методы

У проекта есть описание методов в Postman

POST /people

Метод добавления нового человека

Принимает такие параметры: name,surname,patronymic(опционально). На основе переданных в него данных структура дополняется информацией из сторонних API, возраст и пол получаем по имени, национальность - по фамилии.

Пример ниже показывает создание пользователя и конечную структуру

Принимаемая структура

{
    "name":"Danil",
    "surname":"Vinogradov",
    "patronymic":"Sergeevich"
}

Дополненная структура

{
    "name": "Danil",
    "surname": "Vinogradov",
    "patronymic": "Sergeevich",
    "age": 57,
    "gender": "male",
    "nationality": "RU",
    "created_at": "0001-01-01T00:00:00Z",
    "updated_at": "0001-01-01T00:00:00Z"
}

GET /people/"id"

Метод получения человека по его id в системе

Возвращает структуру, что представлена ниже

Возвращаемая структура

{
    "id": 1,
    "name": "Danil",
    "surname": "Vinogradov",
    "patronymic": "Sergeevich",
    "age": 57,
    "gender": "male",
    "nationality": "RU",
    "created_at": "2024-01-29T08:45:58.188781Z",
    "updated_at": "2024-01-29T08:45:58.188781Z"
}

GET /people?page=1&per_page=5

Метод получения списка людей с пагинацией. Параметр page отвечает за страницу, per_page - за количество отображаемых на странице структур.

Возвращает набор структур, подобной той, что представлена ниже.

Возвращаемая структура

{
    "id": 1,
    "name": "Danil",
    "surname": "Vinogradov",
    "patronymic": "Sergeevich",
    "age": 57,
    "gender": "male",
    "nationality": "RU",
    "created_at": "2024-01-29T08:45:58.188781Z",
    "updated_at": "2024-01-29T08:45:58.188781Z"
}

GET /people-filtered?page=1&per_page=5

Метод получения cписка людей с фильтрами и пагинацией

Возвращает структуры, соответствующие фильтру. Для фильтрации с обозначением границ "from" и "to" доступны поля "id" и "age", поля "nation" и "gender" доступны без границ, остальные элементы будут выводиться просто с пагинацией.

Принимаемая структура

{
    "sort_by": "id",
    "from": 1,
    "to": 4
}

Возвращаемая структура

{
    "id": 1,
    "name": "Danil",
    "surname": "Vinogradov",
    "patronymic": "Sergeevich",
    "age": 57,
    "gender": "male",
    "nationality": "RU",
    "created_at": "2024-01-29T08:45:58.188781Z",
    "updated_at": "2024-01-29T08:45:58.188781Z"
}

PUT /people/"id"

Метод обновления структуры по ее id. "patronymic" - опционален, в случае его отсутствия это поле не будет выводиться.

Возвращает сообщение или ошибку.

Принимаемая структура

{
    "name": "Vladimir",
    "surname":"Zabelin",
    "patronymic":"Vladimirovich"
}

Возвращаемая структура

{
    "message": "Person updated successfully"
}

DELETE /people/"id"

Метод удаления структуры по id

Возвращает сообщение или ошибку.

Возвращаемая структура

{
    "message": "Person was deleted"
}

About

Enriching information about persons service on Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published