Этот проект представляет собой минимальный сервис аналитики на языке программирования Go с использованием базы данных ClickHouse.
github.com/ClickHouse/clickhouse-go: Драйвер ClickHouse для Go. github.com/gorilla/mux: Мощный маршрутизатор HTTP для Go.
go mod tidy go run cmd/main.go
Ваш сервис будет доступен по адресу http://localhost:8080.
curl -X POST http://localhost:8080/track -d "event=page_view"
Или выполните аналогичный POST запрос в Postman.
http://localhost:8080/track?event=page_view
Проверьте, что получаете ответ "Событие успешно зарегистрировано".
Проверьте базу данных ClickHouse, чтобы убедиться, что событие было записано. Используйте средства администрирования ClickHouse или запросы SQL.
go get github.com/DATA-DOG/go-sqlmock
go get github.com/stretchr/testify/assert
github.com/DATA-DOG/go-sqlmock
для создания фейковой базы данных и мокирования запросов.
github.com/stretchr/testify/assert
для удобных функций проверки утверждений.
go test ./...
analytics/
|-- cmd/
| `-- main.go
|-- internal/
| |-- db/
| | `-- db.go
| |-- handler/
| | `-- handler.go
| |-- repository/
| | `-- repository.go
| `-- router/
| `-- router.go
|-- go.mod
|-- go.sum
`-- README.md
cmd: Этот каталог содержит главный файл main.go, который является точкой входа в приложение.
internal: Здесь расположены внутренние пакеты вашего приложения.
db: Код для взаимодействия с базой данных (например, подключение к ClickHouse).
handler: Обработчики HTTP-запросов.
repository: Код для работы с базой данных (например, вставка событий).
router: Конфигурация маршрутизатора HTTP.
go.mod и go.sum: Файлы для управления зависимостями проекта.