https://github.com/walkerchel/to-do
REST API для списков TO-DO
https://github.com/walkerchel/to-do
clean-architecture cleanenv dependency-injection gin-gonic go go-migrate graceful-shutdown jwt-authentication postgres rest-api sqlx
Last synced: about 2 months ago
JSON representation
REST API для списков TO-DO
- Host: GitHub
- URL: https://github.com/walkerchel/to-do
- Owner: WalkerChel
- Created: 2023-07-22T16:07:05.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-07T20:00:18.000Z (over 2 years ago)
- Last Synced: 2025-01-18T02:17:33.572Z (over 1 year ago)
- Topics: clean-architecture, cleanenv, dependency-injection, gin-gonic, go, go-migrate, graceful-shutdown, jwt-authentication, postgres, rest-api, sqlx
- Language: Go
- Homepage:
- Size: 238 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# REST API для списков TO-DO
#### Использованные технологии:
* Разработка, следуя дизайну REST API.
* Gin Web Framework для роутинга.
* Подход Clean Architecture, техника dependency injection.
* Для работы с БД использовалась библиотека sqlx.
* PostgreSQL использовалась для хранения информации.
* Написание SQL запросов.
* Реализованы CRUD операции.
* Создание файлов миграций для поднятия БД с помощью утилиты go-migrate.
* Регистрация и аутентификация.
* Работа с JWT. Middleware для определения пользователя .
* Конфигурация приложения с помощью библиотеки cleanenv.
* Логирование ошибок с помощью библиотеки logrus.
* Makefile для удобного запуска приложения.
* Docker compose файл для объединения приложения с PostgreSQL в один образ.
* Graceful Shutdown для безопасной остановки приложения.
Для тестирования можно использовать Postman.
### Список эндпоинтов:
##### Регистрация и аутентификация:
```
-X POST http://{host}:{port}/auth/sign-up — регистрация
```
```
-X POST http://{host}:{port}/auth/sign-in — аутентификация
```
##### Операции над списками:
```
-X POST http://{host}:{port}/api/lists/ — Создать список
```
```
-X GET http://{host}:{port}/api/lists/ — Получить все списки
```
```
-X GET http://{host}:{port}/api/lists/{id} — Получить список по id
```
```
-X PUT http://{host}:{port}/api/lists/{id} — Обновить список по id
```
```
-X DELETE http://{host}:{port}/api/lists/{id} — Удалить список по id
```
##### Операции над задачами:
```
-X POST http://{host}:{port}/api/lists/{id}/items/ — Создать задачу
```
```
-X GET http://{host}:{port}/api/lists/{id}/items/ — Получить все задачи
```
```
-X GET http://{host}:{port}/api/lists/{id}/items/{item_id} — Получить задачу по id
```
```
-X PUT http://{host}:{port}/api/lists/{id}/items/{item_id} — Обновить здачу по id
```
```
-X DELETE http://{host}:{port}/api/lists/{id}/items/{item_id} — Удалить задачу по id
```
Операция над
Тело запроса
Пользователями
{
"name" : " ",
"username" : " ",
"password" : " "
}
Списками
{
"title": " ",
"description": " "
}
Задачами
{
"title": " ",
"description": " ",
"done":
}
---
### Схема базы данных

---
Для запуска приложения перейдите в дириекторию проекта в терминале и запустите следующие команды:
```
make app-build && make app-run
```
Если запуск производится впервые, то необходимо применить миграции к БД:
```
make migrations_up
```