Move FeatureUsage code into MicCheck.Api.Features.Usage namespace
Groups usage-tracking (metrics, background flush, query service, controller, entity) under its own namespace/folder, updates all consumers and the EF migration snapshot's CLR type strings to match.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ using MicCheck.Api.Common.Security.ApiKeys;
|
||||
using MicCheck.Api.Audit;
|
||||
using MicCheck.Api.Common.Security.Authorization;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Identities;
|
||||
using MicCheck.Api.Organizations;
|
||||
using MicCheck.Api.Projects;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Identities;
|
||||
using MicCheck.Api.Segments;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
public record struct FeatureUsageBucketKey(int EnvironmentId, int FeatureId, string FeatureName, DateOnly UsageDate);
|
||||
@@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.RateLimiting;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/v1/environment/{environmentId}/usage")]
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
public class FeatureUsageDaily
|
||||
{
|
||||
@@ -2,7 +2,7 @@ using System.Diagnostics.CodeAnalysis;
|
||||
using MicCheck.Api.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
[ExcludeFromCodeCoverage(Justification = "Timer-driven BackgroundService that issues raw SQL through a DI-scoped concrete MicCheckDbContext; exercising it cleanly requires a live DB, which CLAUDE.md disallows (no WebApplicationFactory/InMemory). DrainAccumulated's bucketing logic is covered by FeatureUsageMetricsTests.")]
|
||||
public class FeatureUsageFlushBackgroundService(
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Diagnostics.Metrics;
|
||||
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
public class FeatureUsageMetrics : IDisposable
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
using MicCheck.Api.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
public class FeatureUsageQueryService(IMicCheckDbContext db)
|
||||
{
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace MicCheck.Api.Features;
|
||||
namespace MicCheck.Api.Features.Usage;
|
||||
|
||||
public record TopFeatureUsage(int FeatureId, string FeatureName, long Count);
|
||||
|
||||
@@ -305,7 +305,7 @@ namespace MicCheck.Api.Migrations
|
||||
b.ToTable("FeatureStates");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MicCheck.Api.Features.FeatureUsageDaily", b =>
|
||||
modelBuilder.Entity("MicCheck.Api.Features.Usage.FeatureUsageDaily", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
|
||||
@@ -302,7 +302,7 @@ namespace MicCheck.Api.Migrations
|
||||
b.ToTable("FeatureStates");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MicCheck.Api.Features.FeatureUsageDaily", b =>
|
||||
modelBuilder.Entity("MicCheck.Api.Features.Usage.FeatureUsageDaily", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
|
||||
@@ -8,6 +8,7 @@ using MicCheck.Api.Common.Validation;
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Environments;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Identities;
|
||||
using MicCheck.Api.Organizations;
|
||||
using MicCheck.Api.Projects;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Diagnostics.Metrics;
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Identities;
|
||||
using MicCheck.Api.Segments;
|
||||
using MicCheck.Api.Tests.Unit.TestSupport;
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.Security.Claims;
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Environments;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Identities;
|
||||
using MicCheck.Api.Projects;
|
||||
using MicCheck.Api.Segments;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Tests.Unit.TestSupport;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace MicCheck.Api.Tests.Unit.Features;
|
||||
namespace MicCheck.Api.Tests.Unit.Features.Usage;
|
||||
|
||||
[TestFixture]
|
||||
public class FeatureUsageControllerTests
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.Diagnostics.Metrics;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace MicCheck.Api.Tests.Unit.Features;
|
||||
namespace MicCheck.Api.Tests.Unit.Features.Usage;
|
||||
|
||||
[TestFixture]
|
||||
public class FeatureUsageMetricsTests
|
||||
@@ -1,10 +1,10 @@
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Tests.Unit.TestSupport;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace MicCheck.Api.Tests.Unit.Features;
|
||||
namespace MicCheck.Api.Tests.Unit.Features.Usage;
|
||||
|
||||
[TestFixture]
|
||||
public class FeatureUsageQueryServiceTests
|
||||
@@ -2,6 +2,7 @@ using System.Security.Claims;
|
||||
using MicCheck.Api.Data;
|
||||
using MicCheck.Api.Environments;
|
||||
using MicCheck.Api.Features;
|
||||
using MicCheck.Api.Features.Usage;
|
||||
using MicCheck.Api.Identities;
|
||||
using MicCheck.Api.Projects;
|
||||
using MicCheck.Api.Segments;
|
||||
|
||||
Reference in New Issue
Block a user