Проект представляет собой простейший пример описание API и интеграции с базой данных PostgreSQL. Используются структурированные подходы для тестирования, обработки конфигураций и документации.
API построен на Go с использованием Gin
, GoDoc
и Goose
для миграций базы данных.
Проект организован следующим образом:
bin/
- скомпилированные файлыcmd/
- основная директория сmain.go
для запуска сервера.internal/handler/
- содержит логику обработки HTTP-запросов.internal/repository/
- содержит реализации доступа к базе данных.internal/routes/
- содержит генерацию маршрутов APIinternal/config/
- модуль конфигурации для загрузки переменных из.env
файла.db/migrations/
- содержит SQL-миграции для базы данных, управляемые через Goose.db/queries/
- содержатся запросы к БД в формате .sqltests/
- директория для тестов API и интеграционных тестов.
- Go 1.23.2
- Gin
- Goose (для управления миграциями)
- PostgreSQL
- Godoc
- Swagger
git clone https://github.com/kyvees13/lab-server.git
cd lab-server
# для загрузки зависимостей
make deps
Следует скопировать файл с примером .env.example
в .env
откуда проект считывает все переменные
cp .env.example .env
И заполнить его переменными по описанному шаблону
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASS=password
DB_NAME=lab_database
Тесты находятся в папке /tests
и используют стандартную библиотеку testing. Каждый тест проверяет конечные точки API и ожидает корректный ответ от сервера.
make test
Документация API создается с использованием Swagger.
make swagger-init
Документация будет доступна по адресу /swagger/index.html
после запуска сервера.