Skip to content

Latest commit

 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Manager

Go PostgreSQL

HTTP API-сервис для создания, мониторинга и удаления задач с хранением состояния в памяти.


Содержание

  1. Обзор
  2. Требования
  3. Установка
  4. Запуск сервиса
  5. Makefile (команды)
  6. API-эндпоинты
  7. Swagger (OpenAPI)
  8. Тестирование
  9. Структура проекта
  10. Автор

Обзор

  • Парадигма: DDD + Hexagonal (Clean) Architecture
  • Хранение задач: in-memory (map + mutex)
  • Асинхронность: goroutine + context.WithCancel
  • HTTP-сервер: net/http + ручной mux

Требования

  • Go 1.23+
  • make (рекомендуется)
  • swag (для генерации Swagger-документации)

Установка

  1. Клонировать репозиторий:
    git clone <URL-репозитория>
    cd task-manager
  2. Привести зависимости:
    go mod tidy
  3. (опционально) Установить swag:
    go install github.com/swaggo/swag/cmd/swag@latest

Запуск сервиса

make run

или без Makefile:

go run main.go

Сервис стартует на порту :8080.


Makefile (команды)

all: 
    deps fmt swagger test
deps:
	go mod tidy
fmt:
	go fmt ./...
swagger:
	swag init -g internal/adapter/inbound/http/handler.go -o docs
test:
	go test ./... -race -coverprofile=coverage.out
coverage:
	go tool cover -func=coverage.out
run:
	go run main.go
build:
	go build -o bin/task-manager main.go

API-эндпоинты

Метод Путь Описание Код Ответ
POST /tasks Создать новую задачу 201 CreateTaskResponse
GET /tasks Список всех задач (ID, статус, createdAt, duration) 200 []TaskSummaryDTO
GET /tasks/{id} Подробный статус задачи 200 TaskDTO
DELETE /tasks/{id} Отменить или удалить задачу 204

Swagger (OpenAPI)

Сгенерировать:

make swagger

Запустить UI:

router.Handle("/swagger/", httpSwagger.WrapHandler)

Открыть: http://localhost:8080/swagger/index.html


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

make test
make coverage

Покрытие ≥ ~60%.


Структура проекта

.
├── cmd/               # реальная точка входа
├── docs/              # Swagger-документация
├── internal/
│   ├── adapter/       # HTTP, memstore, idgen
│   ├── application/   # ports, services
│   ├── common/logger/
│   └── domain/        # Task, Status, Repo interface
├── main.go            # точка входа, для обхода путей
├── Makefile
├── go.mod
└── README.md

Автор

  • Жаксылыков Азамат

  • Status

About

Simple Task Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages