Skip to content

Manifoldz/EmployeesRESTAPI

Repository files navigation

EmployeesRESTAPI

Описание проекта:

REST API Web-Сервис сотрудников, сделанный на Golang. Все методы реализованы в виде HTTP запросов в формате JSON.

Сервис умеет:

  1. Добавлять сотрудников, в ответ приходит Id добавленного сотрудника.
  2. Удалять сотрудников по Id.
  3. Выводить список сотрудников для указанной компании. Все доступные поля.
  4. Выводить список сотрудников для указанного отдела компании. Все доступные поля.
  5. Изменять сотрудника по его Id. Изменения производятся только тех полей, которые указаны в запросе.

Модель сотрудника:

Id int
Name string 
Surname string 
Phone string 
CompanyId int 
Passport 
  {
  Type string
  Number string 
  }
Department
  {
  Name string 
  Phone string
  } 
}

Имеется возможность пагинации(limit, offset).

  • Проект выполнен с использованием фреймворка gin, библиотек sqlx, viper.
  • Подход Чистой Архитектуры и внедрения зависимостей.
  • Graceful Shutdown
  • База для приложения postgres
  • Приложение запускается в docker
  • Запросы sql выполнены параметризованными для защиты от SQL-иньекций. Названия таблиц указаны константами.

Локальный запуск:

  1. Выполнить make build и затем make run
  2. Выполнить изначальную миграцию БД - make migrate

Тестирование:

Юнит-тест не подготовлены. Для ручного тестирования описаны запросы внутри Makefile через curl.

Для ручного тестирования через другой терминал:

  1. Выполнить make test1
    (Отправка 3 запросов на создание листов, 7 запросов на создание задач в разных листах, и запрос на получение всех задач 1 листа)
  2. Выполнить make test2 (Отправка 3 запросов обновление статуса задач на "выполнено" и вывод всех задач 1 листа, далее вывод всех задач 1 листа с фильтром выполненых и далее вывод всех задач с пагинацией и фильтром).

На доработку:

  1. Расширить возможности сервера - CRUD для всех сущностей (компания, департамент, паспорт).
  2. Функционал нуждается в дополнительном покрытии UNIT-тестами.
  3. Добавить авторизацию
  4. Декомпозировать участки кода на меньшие функции, анализ и рефакторинг дубляжа.
  5. Подготовить документацию

About

Web-Сервис сотрудников

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages