mirror of
https://github.com/azaion/annotations.git
synced 2026-04-22 13:06:31 +00:00
correct app close
fix publishing
This commit is contained in:
@@ -18,6 +18,7 @@ public interface IDbFactory
|
||||
Task Run(Func<AnnotationsDb, Task> func);
|
||||
void SaveToDisk();
|
||||
Task DeleteAnnotations(List<Annotation> annotations, CancellationToken cancellationToken = default);
|
||||
Task DeleteAnnotations(List<string> annotationNames, CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
public class DbFactory : IDbFactory
|
||||
@@ -100,10 +101,16 @@ public class DbFactory : IDbFactory
|
||||
public async Task DeleteAnnotations(List<Annotation> annotations, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var names = annotations.Select(x => x.Name).ToList();
|
||||
await DeleteAnnotations(names, cancellationToken);
|
||||
}
|
||||
|
||||
public async Task DeleteAnnotations(List<string> annotationNames, CancellationToken cancellationToken = default)
|
||||
{
|
||||
await Run(async db =>
|
||||
{
|
||||
await db.Detections.DeleteAsync(x => names.Contains(x.AnnotationName), token: cancellationToken);
|
||||
await db.Annotations.DeleteAsync(x => names.Contains(x.Name), token: cancellationToken);
|
||||
var detDeleted = await db.Detections.DeleteAsync(x => annotationNames.Contains(x.AnnotationName), token: cancellationToken);
|
||||
var annDeleted = await db.Annotations.DeleteAsync(x => annotationNames.Contains(x.Name), token: cancellationToken);
|
||||
Console.WriteLine($"Deleted {detDeleted} detections, {annDeleted} annotations");
|
||||
});
|
||||
SaveToDisk();
|
||||
}
|
||||
|
||||
@@ -71,6 +71,17 @@ public class AnnotationService : INotificationHandler<AnnotationsDeletedEvent>
|
||||
MessageHandler = async (stream, consumer, context, message) =>
|
||||
{
|
||||
var msg = MessagePackSerializer.Deserialize<AnnotationCreatedMessage>(message.Data.Contents);
|
||||
await _dbFactory.Run(async db => await db.QueueOffsets
|
||||
.Where(x => x.QueueName == Constants.MQ_ANNOTATIONS_QUEUE)
|
||||
.Set(x => x.Offset, context.Offset)
|
||||
.UpdateAsync(token: cancellationToken));
|
||||
|
||||
await ThrottleExt.ThrottleRunAfter(() =>
|
||||
{
|
||||
_dbFactory.SaveToDisk();
|
||||
return Task.CompletedTask;
|
||||
}, SaveTaskId, TimeSpan.FromSeconds(5), cancellationToken);
|
||||
|
||||
if (msg.CreatedRole != RoleEnum.Operator) //Process only operator's messages
|
||||
return;
|
||||
|
||||
@@ -86,18 +97,6 @@ public class AnnotationService : INotificationHandler<AnnotationsDeletedEvent>
|
||||
msg.CreatedEmail,
|
||||
generateThumbnail: true,
|
||||
cancellationToken);
|
||||
|
||||
await _dbFactory.Run(async db => await db.QueueOffsets
|
||||
.Where(x => x.QueueName == Constants.MQ_ANNOTATIONS_QUEUE)
|
||||
.Set(x => x.Offset, context.Offset)
|
||||
.UpdateAsync(token: cancellationToken));
|
||||
|
||||
await ThrottleExt.ThrottleRunAfter(() =>
|
||||
{
|
||||
_dbFactory.SaveToDisk();
|
||||
return Task.CompletedTask;
|
||||
}, SaveTaskId, TimeSpan.FromSeconds(3), cancellationToken);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -97,6 +97,7 @@ public class GalleryService(
|
||||
{
|
||||
File.Delete(file.FullName);
|
||||
logger.LogInformation($"No labels found for image {file.FullName}! Image deleted!");
|
||||
await dbFactory.DeleteAnnotations([fName], cancellationToken);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user