refactor(architecture): harden module boundaries
Some checks failed
ci / release-gate (push) Has been cancelled
Some checks failed
ci / release-gate (push) Has been cancelled
This commit is contained in:
@@ -12,7 +12,8 @@ using Tiku.Infrastructure.Storage;
|
||||
namespace Tiku.Infrastructure.PlatformAdmin.Operations;
|
||||
|
||||
internal sealed class PlatformOperationsQueryService(
|
||||
TikuDbContext dbContext,
|
||||
IPlatformControlPlanePersistence platformControlPlanePersistence,
|
||||
IJobsOperationsPersistence jobsOperationsPersistence,
|
||||
IRedisSecurityStore redisSecurityStore,
|
||||
IAssetSecurityScanner assetSecurityScanner,
|
||||
IObjectStorageService objectStorageService,
|
||||
@@ -20,7 +21,7 @@ internal sealed class PlatformOperationsQueryService(
|
||||
{
|
||||
public async Task<PlatformDependencyHealth> GetHealthAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
var database = await dbContext.Database.CanConnectAsync(cancellationToken);
|
||||
var database = await platformControlPlanePersistence.Database.CanConnectAsync(cancellationToken);
|
||||
var redis = !redisSecurityStore.IsConfigured || await redisSecurityStore.PingAsync(cancellationToken);
|
||||
var clamAv = await assetSecurityScanner.CheckHealthAsync(cancellationToken);
|
||||
var storageProvider = objectStorageService.ConfiguredDefaultProvider();
|
||||
@@ -30,7 +31,7 @@ internal sealed class PlatformOperationsQueryService(
|
||||
ObjectStorageProviders.LocalDev => true,
|
||||
_ => false
|
||||
};
|
||||
var heartbeat = await dbContext.WorkerHeartbeats.AsNoTracking()
|
||||
var heartbeat = await jobsOperationsPersistence.WorkerHeartbeats.AsNoTracking()
|
||||
.MaxAsync(item => (DateTimeOffset?)item.LastHeartbeatAt, cancellationToken);
|
||||
var workerReady = heartbeat >= DateTimeOffset.UtcNow.AddMinutes(-2);
|
||||
return new PlatformDependencyHealth(
|
||||
@@ -50,7 +51,7 @@ internal sealed class PlatformOperationsQueryService(
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var staleBefore = DateTimeOffset.UtcNow.AddMinutes(-2);
|
||||
return await dbContext.WorkerHeartbeats.AsNoTracking()
|
||||
return await jobsOperationsPersistence.WorkerHeartbeats.AsNoTracking()
|
||||
.OrderBy(item => item.WorkerId)
|
||||
.ThenBy(item => item.Processor)
|
||||
.Select(item => new PlatformWorkerState(
|
||||
@@ -70,14 +71,14 @@ internal sealed class PlatformOperationsQueryService(
|
||||
public async Task<PlatformJobMetrics> GetJobMetricsAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
var now = DateTimeOffset.UtcNow;
|
||||
var counts = await dbContext.BackgroundJobs.AsNoTracking()
|
||||
var counts = await jobsOperationsPersistence.BackgroundJobs.AsNoTracking()
|
||||
.GroupBy(item => item.Status)
|
||||
.Select(group => new PlatformMetricCount(group.Key.ToString(), group.Count()))
|
||||
.ToArrayAsync(cancellationToken);
|
||||
var oldest = await dbContext.BackgroundJobs.AsNoTracking()
|
||||
var oldest = await jobsOperationsPersistence.BackgroundJobs.AsNoTracking()
|
||||
.Where(item => item.Status == BackgroundJobStatus.Pending)
|
||||
.MinAsync(item => (DateTimeOffset?)item.CreatedAt, cancellationToken);
|
||||
var expired = await dbContext.BackgroundJobs.AsNoTracking()
|
||||
var expired = await jobsOperationsPersistence.BackgroundJobs.AsNoTracking()
|
||||
.CountAsync(item => item.Status == BackgroundJobStatus.Processing && item.LockExpiresAt < now,
|
||||
cancellationToken);
|
||||
return new PlatformJobMetrics(
|
||||
@@ -92,16 +93,16 @@ internal sealed class PlatformOperationsQueryService(
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var now = DateTimeOffset.UtcNow;
|
||||
var approvals = await dbContext.PlatformApprovalRequests.AsNoTracking()
|
||||
var approvals = await platformControlPlanePersistence.PlatformApprovalRequests.AsNoTracking()
|
||||
.GroupBy(item => item.Status)
|
||||
.Select(group => new PlatformMetricCount(group.Key.ToString(), group.Count()))
|
||||
.ToArrayAsync(cancellationToken);
|
||||
var expired = await dbContext.PlatformApprovalRequests.AsNoTracking()
|
||||
var expired = await platformControlPlanePersistence.PlatformApprovalRequests.AsNoTracking()
|
||||
.CountAsync(item => item.Status == PlatformApprovalRequestStatus.Pending && item.ExpiresAt <= now,
|
||||
cancellationToken);
|
||||
var drafts = await dbContext.PlatformConfigurationVersions.AsNoTracking()
|
||||
var drafts = await platformControlPlanePersistence.PlatformConfigurationVersions.AsNoTracking()
|
||||
.CountAsync(item => item.Status == PlatformConfigurationVersionStatus.Draft, cancellationToken);
|
||||
var notifications = await dbContext.PlatformNotificationDeliveries.AsNoTracking()
|
||||
var notifications = await platformControlPlanePersistence.PlatformNotificationDeliveries.AsNoTracking()
|
||||
.GroupBy(item => item.Status)
|
||||
.Select(group => new PlatformMetricCount(group.Key.ToString(), group.Count()))
|
||||
.ToArrayAsync(cancellationToken);
|
||||
|
||||
Reference in New Issue
Block a user