Проект представляет собой тайм-трекер, который позволяет пользователям отслеживать время, затраченное на задачи. Он предоставляет следующий набор функций:
- Учет и отображение времени, затраченного на задачи.
- Создание пользователя.
- Создание новой задачи для отслеживания времени.
- Фильтрация параметров пользователя по различным параметрам (имя,адрес статус).
- Получение списка всех задач с возможностью детального просмотра каждой задачи.
- Получение общей информации о времени, затраченном пользователем на задачи за определенный период.
Для хранения данных используется PostgreSQL.
Запуск проекта:
make run
или
go run cmd/server/main.go --config=./config/local.yaml
Доступ к API:
После запуска проекта API будет доступно по адресу http://localhost:8080
.
Доступ к Swagger:
После запуска проекта swagger будет по адресу http://localhost:8081
После запуска проекта вы можете использовать любой HTTP клиент (например, cURL, Postman) для взаимодействия с API. Ниже приведены примеры использования основных эндпоинтов:
-
Получить список:
GET http://localhost:8080//paginated
-
Создать нового пользователя:
POST http://localhost:8080/users
пример
Post http://localhost:8080/worklogs { "surname": "Иванов", "name": "Иван", "patronymic": "Иванович", "address": "г. Москва, ул. Ленина, д. 10, кв. 5", "passport_series": "1234", "passport_number": "567890" }
-
Получить информацию о задаче по ID:
GET http://localhost:8080/users/{id}
-
Обновить информацию о задаче:
PUT http://localhost:8080/users/{id}
-
Удалить задачу:
DELETE http://localhost:8080/users/{id}
-
Получить список задач с поддержкой пагинации:
GET /users/paginated/{page}&{limit}&{status}
GET /users/paginated?page=1&limit=10&status=true
-
Получить список задач с фильтрацией по дате и статусу:
GET /users/filtered?column1={name}&column2={Jhon}
GET /users/filtered?column1={name}&column2={Jhon}
-
Запустить таймер:
POST /worklogs { "userID": 1, "description": "Working on feature X" }
-
Остановить таймер:
PUT /worklogs/{user_id} { "worklog_id": 1 }
-
Вывести результат:
GET /worklogs/user/{user_id}
пример
Get http://localhost:8080/worklogs/user/1
В планах было сделать шифрование паспортных данных, но не успел к сожалению,стоило обеъдинить запросы к пользователю в один эндпоинт, а не делать каждый отдельно(Get user, paginated, filter) так же в качестве бд было бы предпочтительнее использовать MongoDB