Wire up real implementations for Tracking & Config controllers
- TrackingController: Added database persistence for analytics events * Created AnalyticsEvent entity with user/session tracking * Store event type, data (JSON), and timestamp * Graceful fallback if DB write fails (game doesn't break) - ConfigController: Added real player counting * Query active sessions from last 15 minutes * Return actual player count instead of hardcoded 0 * Real-time server status with DB metrics - Added AnalyticsEvents table migration * Stores all game telemetry for analytics * Indexed by UserId for performance * JSON event data for flexibility Controllers now fully wired to database: - 11/18 controllers REAL implementation ✅ - 5/18 controllers STUB (config-based) ⚠️ - 2/18 controllers SERVICE (delegated) ⚠️ Total: 95 endpoints, improving from demo to production Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -41,6 +41,7 @@ public class RR3DbContext : DbContext
|
||||
public DbSet<RaceParticipant> RaceParticipants { get; set; }
|
||||
public DbSet<GhostData> GhostData { get; set; }
|
||||
public DbSet<CompetitiveRating> CompetitiveRatings { get; set; }
|
||||
public DbSet<AnalyticsEvent> AnalyticsEvents { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
@@ -736,3 +737,17 @@ public class CompetitiveRating
|
||||
// Navigation properties
|
||||
public User? User { get; set; }
|
||||
}
|
||||
|
||||
// Analytics/tracking events
|
||||
public class AnalyticsEvent
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string EventType { get; set; } = string.Empty;
|
||||
public int? UserId { get; set; }
|
||||
public string? SessionId { get; set; }
|
||||
public string EventData { get; set; } = string.Empty; // JSON data
|
||||
public DateTime Timestamp { get; set; } = DateTime.UtcNow;
|
||||
|
||||
// Navigation property
|
||||
public User? User { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user