invalid data deletion fix

This commit is contained in:
Timerix 2025-05-23 01:21:20 +05:00
parent 4d7fbeae42
commit 9415c60287
2 changed files with 19 additions and 17 deletions

View File

@ -51,15 +51,15 @@ public class DatabaseConnector
{
meta.errorMessage = errorMessage;
await UpdateMetadataStatus(meta, SaveFileProcessingStatus.Error);
DeleteAssociatedFiles(meta);
TryDeleteAssociatedFiles(meta);
}
public async Task DeleteMetadata(SaveFileMetadata meta)
public async Task DeleteMetadata(SaveFileMetadata meta, string reason)
{
_logger.LogDebug($"Deleting save file (id: {meta.id} status: {meta.status} " +
_logger.LogDebug($"Deleting save file (id: {meta.id} reason: {reason}" +
$"uploadDate: {meta.uploadDateTime:yyyy/MM/dd})");
await _db.DeleteAsync(meta);
DeleteAssociatedFiles(meta);
TryDeleteAssociatedFiles(meta);
}
/// <summary>
@ -71,20 +71,21 @@ public class DatabaseConnector
var expirationDate = DateTime.Now.AddDays(-_uploadsLifetimeDays);
var metadataTable = _db.Table<SaveFileMetadata>();
int rowCount = await metadataTable.CountAsync();
int i = 0;
var metadataList = await metadataTable.ToListAsync();
int deleteCount = 0;
while(i < rowCount)
foreach (var meta in metadataList)
{
var meta = await metadataTable.ElementAtAsync(i)!;
if(meta.status != SaveFileProcessingStatus.Done ||
meta.uploadDateTime < expirationDate ||
!meta.AssociatedFilesExist())
{
deleteCount++;
await DeleteMetadata(meta);
}
i++;
string deletionReason;
if(meta.status != SaveFileProcessingStatus.Done)
deletionReason = $"invalid status ({meta.status})";
else if (meta.uploadDateTime < expirationDate)
deletionReason = "expired";
else if(!meta.AssociatedFilesExist())
deletionReason = "files not found";
else continue;
deleteCount++;
await DeleteMetadata(meta, deletionReason);
}
_logger.LogInfo($"Deleted {deleteCount} invalid records");
@ -97,7 +98,7 @@ public class DatabaseConnector
File.Delete(file);
}
private void DeleteAssociatedFiles(SaveFileMetadata meta)
private void TryDeleteAssociatedFiles(SaveFileMetadata meta)
{
TryDeleteFile(meta.GetSaveFilePath());
TryDeleteFile(meta.GetParsedDataPath());

View File

@ -1,3 +1,4 @@
## WebAPI.SaveParsingOperation:
Save parsed data in protobuf
Re-parse if saved data was parsed with another query
Implement automatic database cleanup