v0.2.0 - Client-Server Refactor and EmitAndSend
π Major Architecture Refactor
This release introduces significant improvements to the tlytics architecture, separating client and server concerns for better usability and maintainability.
β¨ New Features
EmitAndSend Method
client.EmitAndSend(event)- Send events immediately with error handling- Perfect for testing server connectivity
- Returns errors for connection issues
- Bypasses the internal queue for instant transmission
Clean Client-Server Separation
NewClient()now returns*Clientinstead of*TlyticsTlyticsstruct is now server-only- Removed the
isServerboolean field - Simplified API with clear separation of concerns
Emitter Interface
- New
Emitterinterface implemented by bothClientandServer - Middleware now accepts
Emitterfor flexibility - Clean abstraction for event emission
π§ͺ Testing Improvements
Comprehensive Integration Tests
TestClientServerIntegration- Full end-to-end testingTestEmitAndSendConnectionError- Connection error handlingTestMultipleEventsIntegration- Concurrent event testing- Verifies message delivery and storage in database
π API Changes
Breaking Changes
NewClient()returns*Clientinstead of*Tlytics- Middleware functions now accept
Emitterinterface Tlyticsstruct no longer has client-related fields
Migration Guide
// Before v0.2.0
analytics, err := tlytics.NewClient(config) // returns *Tlytics
defer analytics.Close()
// v0.2.0+
client, err := tlytics.NewClient(config) // returns *Client
defer client.Close()
// For immediate sending (new feature)
err := client.EmitAndSend(event) // Send immediately with error handlingποΈ Internal Improvements
- Cleaner separation of client and server logic
- Removed conditional
isServerlogic throughout codebase - Better error handling for network operations
- More focused struct responsibilities
π§© Compatibility
- Middleware functions remain compatible (now use
Emitterinterface) Close()method added toClientfor API consistency- Backward compatibility maintained where possible
Full Changelog: v0.1.0...v0.2.0