using System.Diagnostics.Metrics; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using MoonCore.Extended.Abstractions; using Moonlight.ApiServer.Database.Entities; using Moonlight.ApiServer.Interfaces; namespace Moonlight.ApiServer.Implementations.Metrics; public class UsersMetric : IMetric { private Gauge Users; public Task InitializeAsync(Meter meter) { Users = meter.CreateGauge("moonlight_users"); return Task.CompletedTask; } public async Task RunAsync(IServiceProvider provider, CancellationToken cancellationToken) { var usersRepo = provider.GetRequiredService>(); var count = await usersRepo.Get().CountAsync(cancellationToken: cancellationToken); Users.Record(count); } }