public void UpdateJsonSyncingFeed(long groupId, JsonSyncingFeed state) { DbSyncingFeed row = new DbSyncingFeed(); row.FeedId = groupId; // Update the aggregated properties row.LastUpdateUtc = state.LastUpdateUtc; row.LastCheckNewUtc = state.LastCheckNewUtc; row.ReachedEmptyResult = state.ReachedEmptyResult; row.HasSpanGaps = state.HasSpanGaps; row.Json = SQLiteJsonConverter.SaveToJson(state); SyncingFeeds.InsertRecord(row, SQLiteConflictResolution.Replace); }
static JsonMessageEnvelope ConvertArchiveMessageEnvelope(JsonMessageEnvelopeUntyped untypedEnvelope) { string reserializedString = SQLiteJsonConverter.SaveToJson(untypedEnvelope); JsonMessageEnvelope envelope = SQLiteJsonConverter.LoadFromJson <JsonMessageEnvelope>(reserializedString); // Use untypedEnvelope to fill in the RawJson properties for (int i = 0; i < untypedEnvelope.Messages.Length; ++i) { JObject archiveMessage = untypedEnvelope.Messages[i]; string reserializedMessage = SQLiteJsonConverter.SaveToJson(archiveMessage); envelope.Messages[i].RawJson = reserializedMessage; } foreach (var pair in untypedEnvelope.ThreadedExtended) { long threadId = pair.Key; JObject[] archiveMessageList = pair.Value; var messageList = envelope.ThreadedExtended[threadId]; for (int i = 0; i < archiveMessageList.Length; ++i) { JObject archiveMessage = archiveMessageList[i]; string reserializedMessage = SQLiteJsonConverter.SaveToJson(archiveMessage); messageList[i].RawJson = reserializedMessage; } } // Two indexes are needed because YamsterReferenceJsonConverter discards unrecognized items // from envelope.References; we should probably fix that. for (int archiveIndex = 0, index = 0; ;) { if (archiveIndex >= untypedEnvelope.References.Length) { break; } if (index >= envelope.References.Length) { break; } var reference = envelope.References[index]; JObject archiveReference = untypedEnvelope.References[archiveIndex]; long archiveReferenceId = Convert.ToInt64(((JValue)archiveReference["id"]).Value); if (reference.Id == archiveReferenceId) { string reserializedMessage = SQLiteJsonConverter.SaveToJson(archiveReference); envelope.References[index].RawJson = reserializedMessage; ++index; } ++archiveIndex; } #if DEBUG foreach (var reference in envelope.References) { Debug.Assert(reference.RawJson != null); } #endif return(envelope); }