Минимальный REST API для управления пользователями и задачами.
- CRUD для задач (
/tasks) - CRUD для пользователей (
/users) - Получение задач конкретного пользователя (
GET /users/:id/tasks) - Фильтрация/сортировка/пагинация списка задач через query-параметры
- Хранение данных в PostgreSQL
- Автоприменение миграций в Docker через
migrate/migrate
- Go 1.25
- gin
- pgx/v5
- squirrel
- PostgreSQL 15
- golang-migrate/migrate
- Docker Compose
docker compose up --buildПосле запуска:
- API:
localhost:8080 - PostgreSQL:
localhost:5432
Переменная окружения приложения:
DATABASE_URL
По умолчанию в compose используется:
postgres://postgres:postgres@postgres:5432/app?sslmode=disable
- Подними PostgreSQL локально и создай БД
app - Примени миграции (например через
migrate) - Запусти приложение:
export DATABASE_URL="postgres://postgres:postgres@localhost:5432/app?sslmode=disable"
go run ./cmd/appСервер слушает :8080.
POST /tasks/— создать задачуGET /tasks/— получить список задачGET /tasks/:id— получить задачу по idPUT /tasks/:id— полное обновление задачиPATCH /tasks/:id— частичное обновление задачиDELETE /tasks/:id— удалить задачу
POST /users/— создать пользователяGET /users/:id— получить пользователя по idPATCH /users/:id— частично обновить пользователяDELETE /users/:id— удалить пользователяGET /users/:id/tasks— получить задачи пользователя
{
"id": 1,
"name": "Ars",
"email": "ars@example.com",
"created_at": "2026-05-05T15:00:00Z"
}{
"id": 10,
"title": "Сделать README",
"description": "Описать API и запуск",
"status": "pending",
"user_id": 1,
"created_at": "2026-05-05T15:05:00Z"
}Поддерживаются query-параметры:
status— фильтр по статусуuser_id— фильтр по пользователюcreated_at— фильтр по времени созданияsort_by— поле сортировки (created_at,title,status)order_by— направление (ASCилиDESC)limit— размер страницы (1..100, по умолчанию10)page— номер страницы (по умолчанию1)
Пример:
GET /tasks/?status=pending&user_id=1&sort_by=created_at&order_by=DESC&limit=10&page=1
Миграции лежат в папке migrations/:
- создание таблицы
users - создание таблицы
tasks(FK наusers,ON DELETE CASCADE)
cmd/app/main.go
internal/config/
internal/handlers/
internal/repository/
internal/routers/
internal/service/
internal/models/
internal/errs/
migrations/
docker-compose.yaml
go test ./...
go build ./...
docker compose up --build
docker compose down- Нет аутентификации/авторизации
- Нет отдельного
healthendpoint - Нет OpenAPI/Swagger-спецификации
- Ошибки возвращаются как текстовые сообщения, а не единый JSON-формат