using Newtonsoft.Json; using Newtonsoft.Json.Linq; using JsonSerializer = Newtonsoft.Json.JsonSerializer; namespace API.Schema.Jobs; public class JobJsonDeserializer : JsonConverter { public override bool CanWrite { get; } = false; public override void WriteJson(JsonWriter writer, Job? value, JsonSerializer serializer) { throw new NotImplementedException(); } public override Job? ReadJson(JsonReader reader, Type objectType, Job? existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject j = JObject.Load(reader); JobType? type = Enum.Parse(j.GetValue("jobType")!.Value()!); return type switch { JobType.DownloadSingleChapterJob => j.ToObject(), JobType.DownloadNewChaptersJob => j.ToObject(), JobType.UpdateMetaDataJob => j.ToObject(), JobType.MoveFileOrFolderJob => j.ToObject(), _ => null }; } }