REST API Web-Сервис сотрудников, сделанный на Golang. Все методы реализованы в виде HTTP запросов в формате JSON.
Сервис умеет:
- Добавлять сотрудников, в ответ приходит Id добавленного сотрудника.
- Удалять сотрудников по Id.
- Выводить список сотрудников для указанной компании. Все доступные поля.
- Выводить список сотрудников для указанного отдела компании. Все доступные поля.
- Изменять сотрудника по его 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-иньекций. Названия таблиц указаны константами.
- Выполнить make build и затем make run
- Выполнить изначальную миграцию БД - make migrate
Юнит-тест не подготовлены. Для ручного тестирования описаны запросы внутри Makefile через curl.
Для ручного тестирования через другой терминал:
- Выполнить make test1
(Отправка 3 запросов на создание листов, 7 запросов на создание задач в разных листах, и запрос на получение всех задач 1 листа) - Выполнить make test2 (Отправка 3 запросов обновление статуса задач на "выполнено" и вывод всех задач 1 листа, далее вывод всех задач 1 листа с фильтром выполненых и далее вывод всех задач с пагинацией и фильтром).
- Расширить возможности сервера - CRUD для всех сущностей (компания, департамент, паспорт).
- Функционал нуждается в дополнительном покрытии UNIT-тестами.
- Добавить авторизацию
- Декомпозировать участки кода на меньшие функции, анализ и рефакторинг дубляжа.
- Подготовить документацию