sprints work

This commit is contained in:
master
2026-01-11 11:19:40 +02:00
parent f6ef1ef337
commit 582a41d7a9
72 changed files with 2680 additions and 390 deletions

View File

@@ -16,6 +16,7 @@ public sealed class IntegrationService
private readonly IIntegrationEventPublisher _eventPublisher;
private readonly IIntegrationAuditLogger _auditLogger;
private readonly IAuthRefResolver _authRefResolver;
private readonly TimeProvider _timeProvider;
private readonly ILogger<IntegrationService> _logger;
public IntegrationService(
@@ -24,6 +25,7 @@ public sealed class IntegrationService
IIntegrationEventPublisher eventPublisher,
IIntegrationAuditLogger auditLogger,
IAuthRefResolver authRefResolver,
TimeProvider timeProvider,
ILogger<IntegrationService> logger)
{
_repository = repository;
@@ -31,11 +33,13 @@ public sealed class IntegrationService
_eventPublisher = eventPublisher;
_auditLogger = auditLogger;
_authRefResolver = authRefResolver;
_timeProvider = timeProvider ?? TimeProvider.System;
_logger = logger;
}
public async Task<IntegrationResponse> CreateAsync(CreateIntegrationRequest request, string? userId, string? tenantId, CancellationToken cancellationToken = default)
{
var now = _timeProvider.GetUtcNow();
var integration = new Integration
{
Id = Guid.NewGuid(),
@@ -51,7 +55,9 @@ public sealed class IntegrationService
Tags = request.Tags?.ToList() ?? [],
CreatedBy = userId,
UpdatedBy = userId,
TenantId = tenantId
TenantId = tenantId,
CreatedAt = now,
UpdatedAt = now
};
var created = await _repository.CreateAsync(integration, cancellationToken);
@@ -62,7 +68,7 @@ public sealed class IntegrationService
created.Type,
created.Provider,
userId,
DateTimeOffset.UtcNow), cancellationToken);
_timeProvider.GetUtcNow()), cancellationToken);
await _auditLogger.LogAsync("integration.created", created.Id, userId, new { created.Name, created.Type, created.Provider }, cancellationToken);
@@ -119,7 +125,7 @@ public sealed class IntegrationService
if (request.Tags is not null) integration.Tags = request.Tags.ToList();
if (request.Status.HasValue) integration.Status = request.Status.Value;
integration.UpdatedAt = DateTimeOffset.UtcNow;
integration.UpdatedAt = _timeProvider.GetUtcNow();
integration.UpdatedBy = userId;
var updated = await _repository.UpdateAsync(integration, cancellationToken);
@@ -128,7 +134,7 @@ public sealed class IntegrationService
updated.Id,
updated.Name,
userId,
DateTimeOffset.UtcNow), cancellationToken);
_timeProvider.GetUtcNow()), cancellationToken);
if (oldStatus != updated.Status)
{
@@ -136,7 +142,7 @@ public sealed class IntegrationService
updated.Id,
oldStatus,
updated.Status,
DateTimeOffset.UtcNow), cancellationToken);
_timeProvider.GetUtcNow()), cancellationToken);
}
await _auditLogger.LogAsync("integration.updated", updated.Id, userId, new { updated.Name, OldStatus = oldStatus, NewStatus = updated.Status }, cancellationToken);
@@ -156,7 +162,7 @@ public sealed class IntegrationService
await _eventPublisher.PublishAsync(new IntegrationDeletedEvent(
id,
userId,
DateTimeOffset.UtcNow), cancellationToken);
_timeProvider.GetUtcNow()), cancellationToken);
await _auditLogger.LogAsync("integration.deleted", id, userId, new { integration.Name }, cancellationToken);
@@ -180,7 +186,7 @@ public sealed class IntegrationService
$"No connector plugin available for provider {integration.Provider}",
null,
TimeSpan.Zero,
DateTimeOffset.UtcNow);
_timeProvider.GetUtcNow());
}
var resolvedSecret = integration.AuthRefUri is not null
@@ -189,9 +195,9 @@ public sealed class IntegrationService
var config = BuildConfig(integration, resolvedSecret);
var startTime = DateTimeOffset.UtcNow;
var startTime = _timeProvider.GetUtcNow();
var result = await plugin.TestConnectionAsync(config, cancellationToken);
var endTime = DateTimeOffset.UtcNow;
var endTime = _timeProvider.GetUtcNow();
// Update integration status based on result
var newStatus = result.Success ? IntegrationStatus.Active : IntegrationStatus.Failed;
@@ -233,7 +239,7 @@ public sealed class IntegrationService
HealthStatus.Unknown,
$"No connector plugin available for provider {integration.Provider}",
null,
DateTimeOffset.UtcNow,
_timeProvider.GetUtcNow(),
TimeSpan.Zero);
}