public Models.SyncState SyncDown(SyncEvent syncEvent, string target, string soupName, Models.SyncOptions options) { var soqlsyncDownTarget = JObject.Parse(target); var soqlsyncDown = new SoqlSyncDownTarget(soqlsyncDownTarget); SyncDownTarget syncDown = soqlsyncDown; var syncOptions = options != null?SyncOptions.FromJson(JObject.Parse(JsonConvert.SerializeObject(options))) : null; var state = _syncManager.SyncDown(syncDown, soupName, syncEvent.OnSyncEventRaised, syncOptions); return(Models.SyncState.FromJson(state.AsJson().ToString())); }
public static SyncOptions FromJson(JObject options) { if (options == null) return null; var mergeModeStr = options.ExtractValue<string>(Constants.MergeMode); var mergeMode = String.IsNullOrWhiteSpace(mergeModeStr) ? SyncState.MergeModeOptions.None : (SyncState.MergeModeOptions) Enum.Parse(typeof (SyncState.MergeModeOptions), mergeModeStr); var array = options.ExtractValue<JArray>(Constants.FieldList); SyncOptions so = new SyncOptions(array.ToObject<List<string>>(), mergeMode); array = options.ExtractValue<JArray>("fieldsToExcludeOnUpdate"); so.setFieldsToExcludeOnUpdate(array.ToObject<List<string>>()); return so; }
/// <summary> /// Create sync state in database for a sync down and return corresponding SyncState /// </summary> /// <param name="store"></param> /// <param name="target"></param> /// <param name="options"></param> /// <param name="soupName"></param> /// <returns></returns> public static SyncState CreateSyncDown(SmartStore.Store.SmartStore store, SyncDownTarget target, string soupName, SyncOptions options = null) { var sync = new JObject { {Constants.SyncType, SyncTypes.SyncDown.ToString()}, {Constants.SyncTarget, target.AsJson()}, {Constants.SyncSoupName, soupName}, {Constants.SyncStatus, SyncStatusTypes.New.ToString()}, {Constants.SyncProgress, 0}, {Constants.SyncTotalSize, -1}, {Constants.SyncMaxTimeStamp, -1}, }; if (options != null) { sync[Constants.SyncOptions] = options.AsJson(); } JObject upserted = store.Upsert(Constants.SyncsSoup, sync); if (upserted != null) { return FromJson(upserted); } sync[Constants.SyncStatus] = SyncStatusTypes.Failed.ToString(); return FromJson(sync); }
/// <summary> /// Create sync state in database for a sync up and return corresponding SyncState /// </summary> /// <param name="store"></param> /// <param name="target"></param> /// <param name="options"></param> /// <param name="soupName"></param> /// <returns></returns> public static SyncState CreateSyncUp(SmartStore.Store.SmartStore store, SyncUpTarget target, SyncOptions options, string soupName) { var sync = new JObject { { Constants.SyncType, SyncTypes.SyncUp.ToString() }, { Constants.SyncSoupName, soupName }, { Constants.SyncOptions, options.AsJson() }, { Constants.SyncStatus, SyncStatusTypes.New.ToString() }, { Constants.SyncProgress, 0 }, { Constants.SyncTotalSize, -1 }, { Constants.SyncMaxTimeStamp, -1 }, { Constants.SyncTarget, target.AsJson() } }; JObject upserted = store.Upsert(Constants.SyncsSoup, sync); if (upserted != null) { return(FromJson(upserted)); } sync[Constants.SyncStatus] = SyncStatusTypes.Failed.ToString(); return(FromJson(sync)); }
public Models.SyncState SyncUp(SyncEvent syncEvent, Models.SyncUpTarget target, Models.SyncOptions options, string soupName) { var syncUp = JsonConvert.SerializeObject(target); var syncOptions = JsonConvert.SerializeObject(options, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); var state = _syncManager.SyncUp(JsonConvert.DeserializeObject <SyncUpTarget>(syncUp), SyncOptions.FromJson(JObject.Parse(syncOptions)), soupName, syncEvent.OnSyncEventRaised); return(Models.SyncState.FromJson(state.AsJson().ToString())); }