61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
using System.Text.Json.Serialization;
|
|
|
|
namespace ParadoxSaveParser.WebAPI.Database;
|
|
|
|
public enum SaveFileProcessingStatus
|
|
{
|
|
Initialized,
|
|
Uploaded,
|
|
Parsing,
|
|
SavingResults,
|
|
Done,
|
|
Error,
|
|
}
|
|
|
|
public enum OriginalFileType
|
|
{
|
|
Text,
|
|
Zip,
|
|
}
|
|
|
|
public class LowerCaseEnumConverter<T>() : JsonStringEnumConverter<T>(JsonNamingPolicy.SnakeCaseLower) where T : struct, Enum;
|
|
|
|
public class SaveFileMetadata
|
|
{
|
|
[SQLite.PrimaryKey]
|
|
[SQLite.NotNull]
|
|
public string id { get; init; } = null!;
|
|
|
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
|
[SQLite.NotNull]
|
|
public Game game { get; init; }
|
|
|
|
[JsonConverter(typeof(LowerCaseEnumConverter<SaveFileProcessingStatus>))]
|
|
[SQLite.NotNull]
|
|
public SaveFileProcessingStatus status { get; set; }
|
|
|
|
[SQLite.NotNull]
|
|
public DateTime uploadDateTime { get; set; }
|
|
|
|
[JsonConverter(typeof(LowerCaseEnumConverter<OriginalFileType>))]
|
|
[SQLite.NotNull]
|
|
public OriginalFileType originalFileType { get; init; }
|
|
|
|
[SQLite.NotNull]
|
|
public string originalFileName { get; init; } = null!;
|
|
|
|
// if error occured during parsing, it's message is saved here
|
|
// status stays the same as when error occured
|
|
public string? errorMessage { get; set; }
|
|
|
|
|
|
public IOPath GetSaveFilePath() => Path.Concat(PathHelper.SAVES_DIR, id + ".tar.zst");
|
|
|
|
public IOPath GetParsedDataPath() => Path.Concat(PathHelper.PARSED_DIR, id + ".parsed.json.zstd");
|
|
|
|
public bool AssociatedFilesExist()
|
|
{
|
|
return File.Exists(GetSaveFilePath()) && File.Exists(GetParsedDataPath());
|
|
}
|
|
}
|