Compare commits

..

No commits in common. "36d39b524c033ea2d6c8df9be1d1dc5d65b29dcf" and "4d7fbeae42dafaa41c536ed365c37a8658c2fa3b" have entirely different histories.

4 changed files with 19 additions and 22 deletions

View File

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

View File

@ -4,8 +4,7 @@ namespace ParadoxSaveParser.WebAPI;
public static class PathHelper
{
public static readonly IOPath PUBLIC_DIR = "public";
public static readonly IOPath DATA_DIR = Path.Concat(PUBLIC_DIR, "data");
public static readonly IOPath DATA_DIR = "data";
public static readonly IOPath SAVES_DIR = Path.Concat(DATA_DIR, "saves");
public static readonly IOPath PARSED_DIR = Path.Concat(DATA_DIR, "parsed");
public static readonly IOPath TEMP_DIR = "temp";

View File

@ -97,7 +97,7 @@ public static class Program
// http server
var router = new SimpleRouter(loggerRoot);
router.DefaultRoute = new SimpleRouter.RouteWithMethod(HttpMethod.GET,
new ServeFilesRouteHandler(PathHelper.PUBLIC_DIR));
new ServeFilesRouteHandler("public"));
router.MapRoute("/uploadSave", HttpMethod.POST,
new UploadSaveHandler(mainCancel.Token, bgJobManager, saveFilters));
router.MapRoute("/getSaveStatus", HttpMethod.GET,

View File

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