Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit b07546d

Browse files
committed
WIP
1 parent 68fedbd commit b07546d

File tree

8 files changed

+24
-69
lines changed

8 files changed

+24
-69
lines changed

src/ServiceLayer.Mesh/Functions/FileDiscoveryFunction.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ public class FileDiscoveryFunction(
1414
IFileDiscoveryFunctionConfiguration configuration,
1515
IMeshInboxService meshInboxService,
1616
ServiceLayerDbContext serviceLayerDbContext,
17-
IFileExtractQueueClient fileExtractQueueClient,
18-
IMeshFileStatusService meshFileStatusService)
17+
IFileExtractQueueClient fileExtractQueueClient)
1918
{
2019
[Function("FileDiscoveryFunction")]
2120
public async Task Run([TimerTrigger("%FileDiscoveryTimerExpression%")] TimerInfo myTimer)
@@ -34,11 +33,15 @@ public async Task Run([TimerTrigger("%FileDiscoveryTimerExpression%")] TimerInfo
3433

3534
if (!existing)
3635
{
37-
var file = MeshFile.Create(
38-
FileEventSource.DiscoveryFunction,
39-
MeshFileType.NbssAppointmentEvents,
40-
messageId,
41-
configuration.NbssMeshMailboxId);
36+
var file = new MeshFile
37+
{
38+
FileId = messageId,
39+
FileType = MeshFileType.NbssAppointmentEvents,
40+
MailboxId = configuration.NbssMeshMailboxId,
41+
Status = MeshFileStatus.Discovered,
42+
FirstSeenUtc = DateTime.UtcNow,
43+
LastUpdatedUtc = DateTime.UtcNow
44+
};
4245

4346
serviceLayerDbContext.MeshFiles.Add(file);
4447

src/ServiceLayer.Mesh/Functions/FileExtractFunction.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public async Task Run([QueueTrigger("%FileExtractQueueName%")] FileExtractQueueM
4848
private async Task<MeshFile?> GetFileAsync(string fileId)
4949
{
5050
var file = await serviceLayerDbContext.MeshFiles
51-
.Include(x => x.Events)
5251
.FirstOrDefaultAsync(f => f.FileId == fileId);
5352

5453
if (file == null)
@@ -79,7 +78,8 @@ private bool IsFileSuitableForExtraction(MeshFile file)
7978

8079
private async Task UpdateFileStatusForExtraction(MeshFile file)
8180
{
82-
file.SetStatus(FileEventSource.ExtractFunction, MeshFileStatus.Extracting);
81+
file.Status = MeshFileStatus.Extracting;
82+
file.LastUpdatedUtc = DateTime.UtcNow;
8383
await serviceLayerDbContext.SaveChangesAsync();
8484
}
8585

@@ -100,7 +100,8 @@ private async Task ProcessFileExtraction(MeshFile file)
100100
}
101101

102102
file.BlobPath = blobPath;
103-
file.SetStatus(FileEventSource.ExtractFunction, MeshFileStatus.Extracted);
103+
file.Status = MeshFileStatus.Extracted;
104+
file.LastUpdatedUtc = DateTime.UtcNow;
104105
await serviceLayerDbContext.SaveChangesAsync();
105106

106107
await fileTransformQueueClient.EnqueueFileTransformAsync(file);
@@ -109,7 +110,8 @@ private async Task ProcessFileExtraction(MeshFile file)
109110
private async Task HandleExtractionError(MeshFile file, FileExtractQueueMessage message, Exception ex)
110111
{
111112
logger.LogError(ex, "An exception occurred during file extraction for fileId: {FileId}", message.FileId);
112-
file.SetStatus(FileEventSource.ExtractFunction, MeshFileStatus.FailedExtract);
113+
file.Status = MeshFileStatus.FailedExtract;
114+
file.LastUpdatedUtc = DateTime.UtcNow;
113115
await serviceLayerDbContext.SaveChangesAsync();
114116
await fileExtractQueueClient.SendToPoisonQueueAsync(message);
115117
}

src/ServiceLayer.Mesh/Functions/FileRetryFunction.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public async Task Run([TimerTrigger("%FileRetryTimerExpression%")] TimerInfo myT
2929
private async Task RetryStaleExtractions(DateTime staleDateTimeUtc)
3030
{
3131
var staleFiles = await serviceLayerDbContext.MeshFiles
32-
.Include(x => x.Events)
3332
.Where(f =>
3433
(f.Status == MeshFileStatus.Discovered || f.Status == MeshFileStatus.Extracting)
3534
&& f.LastUpdatedUtc <= staleDateTimeUtc)
@@ -49,7 +48,6 @@ private async Task RetryStaleExtractions(DateTime staleDateTimeUtc)
4948
private async Task RetryStaleTransformations(DateTime staleDateTimeUtc)
5049
{
5150
var staleFiles = await serviceLayerDbContext.MeshFiles
52-
.Include(x => x.Events)
5351
.Where(f =>
5452
(f.Status == MeshFileStatus.Extracted || f.Status == MeshFileStatus.Transforming)
5553
&& f.LastUpdatedUtc <= staleDateTimeUtc)

src/ServiceLayer.Mesh/Functions/FileTransformFunction.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public async Task Run([QueueTrigger("%FileTransformQueueName%")] FileTransformQu
5858
private async Task<MeshFile?> GetFileAsync(string fileId)
5959
{
6060
var file = await serviceLayerDbContext.MeshFiles
61-
.Include(x => x.Events)
6261
.FirstOrDefaultAsync(f => f.FileId == fileId);
6362

6463
if (file == null)

src/ServiceLayer.Mesh/Functions/MeshFileStatusService.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/ServiceLayer.Mesh/Program.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424

2525
services.AddApplicationConfiguration();
2626
services.AddNbssAppointmentEventServices();
27-
28-
services.AddScoped<IMeshFileStatusService, MeshFileStatusService>();
2927
});
3028

3129
var app = host.Build();
Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.ComponentModel.DataAnnotations;
2-
using System.Runtime.InteropServices;
32

43
namespace ServiceLayer.Data.Models;
54

@@ -19,21 +18,4 @@ public class MeshFile
1918
public DateTime LastUpdatedUtc { get; set; }
2019
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
2120
public string? ValidationErrors { get; set; }
22-
23-
public void SetStatus(FileEventSource source, MeshFileStatus status)
24-
{
25-
var now = DateTime.UtcNow;
26-
27-
Events.Add(new MeshFileEvent
28-
{
29-
FileId = FileId,
30-
Source = source,
31-
OldStatus = Status,
32-
NewStatus = status,
33-
TimestampUtc = now
34-
});
35-
36-
Status = status;
37-
LastUpdatedUtc = now;
38-
}
3921
}

tests/ServiceLayer.Mesh.Tests/Functions/FunctionTestBase.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,16 @@ protected MeshFile SaveMeshFile(MeshFileStatus status = MeshFileStatus.Extracted
3737
LastUpdatedUtc = lastUpdated
3838
};
3939

40-
file.Events.Add(new MeshFileEvent
40+
var fileEvent = new MeshFileEvent
4141
{
4242
FileId = fileId,
4343
NewStatus = status,
4444
TimestampUtc = lastUpdated,
4545
Source = FileEventSource.DiscoveryFunction
46-
});
46+
};
4747

4848
DbContext.MeshFiles.Add(file);
49+
DbContext.MeshFileEvents.Add(fileEvent);
4950
DbContext.SaveChanges();
5051
return file;
5152
}
@@ -62,12 +63,15 @@ protected MeshFile AssertFileUnchanged(string fileId, MeshFileStatus expectedSta
6263
protected MeshFile AssertFileUpdated(string fileId, MeshFileStatus expectedStatus, FileEventSource expectedSource)
6364
{
6465
var updated = DbContext.MeshFiles
65-
.Include(x => x.Events)
6666
.Single(x => x.FileId == fileId);
6767
Assert.Equal(expectedStatus, updated.Status);
6868
Assert.True(updated.LastUpdatedUtc > DateTime.UtcNow.AddSeconds(-10));
6969

70-
var lastEvent = updated.Events.OrderByDescending(x => x.TimestampUtc).First();
70+
var lastEvent = DbContext.MeshFileEvents
71+
.Where(x => x.FileId == fileId)
72+
.OrderByDescending(x => x.TimestampUtc)
73+
.First();
74+
7175
Assert.Equal(expectedStatus, lastEvent.NewStatus);
7276
Assert.True(lastEvent.TimestampUtc > DateTime.UtcNow.AddSeconds(-10));
7377
Assert.Equal(expectedSource, lastEvent.Source);

0 commit comments

Comments
 (0)