Git Product home page Git Product logo

analytic-go's Introduction

Analytics Service

Этот проект представляет собой минимальный сервис аналитики на языке программирования 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 ./...

img.png

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

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: Файлы для управления зависимостями проекта.

analytic-go's People

Contributors

turkprogrammer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.