mirror of
https://github.com/SamyRai/tercul-backend.git
synced 2025-12-27 02:51:34 +00:00
This commit implements a robust, production-ready analytics system using an event-driven architecture with Redis and `asynq`. Key changes: - Event-Driven Architecture: Instead of synchronous database updates, analytics events (e.g., views, likes, comments) are now published to a Redis queue. This improves API response times and decouples the analytics system from the main application flow. - Background Worker: A new worker process (`cmd/worker`) has been created to consume events from the queue and update the analytics counters in the database. - View Counting: Implemented the missing view counting feature for both works and translations. - New Analytics Query: Added a `popularTranslations` GraphQL query to demonstrate how to use the collected analytics data. - Testing: Added unit tests for the new event publisher and integration tests for the analytics worker. Known Issue: The integration tests for the analytics worker (`AnalyticsWorkerSuite`) and the GraphQL API (`GraphQLIntegrationSuite`) are currently failing due to the lack of a Redis service in the test environment. The tests are written and are expected to pass in an environment where Redis is available on `localhost:6379`, as configured in the CI pipeline. |
||
|---|---|---|
| .github/workflows | ||
| api | ||
| cmd | ||
| deploy | ||
| internal | ||
| ops | ||
| pkg/linguistics | ||
| test | ||
| .air.toml | ||
| .gitignore | ||
| .tool-versions | ||
| create_repo_interfaces.go | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.dev | ||
| fix_domain_repos.go | ||
| fix_sql_imports.go | ||
| go.mod | ||
| go.sum | ||
| gqlgen.yml | ||
| refactor.md | ||
| report.md | ||
| requirements.txt | ||
| TODO.md | ||
| tools.go | ||