/// <summary> /// Create, update and delete of a preference key /// </summary> private async Task <int> UpsertPreferenceKey(PreferenceEventType eventType, Guid?prefKeyUID, string prefKeyName) { if (eventType == PreferenceEventType.CreatePreferenceKeyEvent || eventType == PreferenceEventType.UpdatePreferenceKeyEvent) { //Check name doesn't already exist as it must be unique if (await GetPreferenceKey(prefKeyName: prefKeyName) != null) { Log.LogDebug($"PreferenceRepository/StorePreferenceKey: No action as preference key name already exists"); return(0); } } var upsertedCount = 0; var existing = await GetPreferenceKey(prefKeyUID); var prefKey = new PrefKeyDataModel { KeyName = prefKeyName, PreferenceKeyUID = prefKeyUID?.ToString(), PreferenceKeyID = existing?.PreferenceKeyID ?? 0 }; if (eventType == PreferenceEventType.CreatePreferenceKeyEvent) { upsertedCount = await CreatePreferenceKey(prefKey, existing); } if (eventType == PreferenceEventType.UpdatePreferenceKeyEvent) { upsertedCount = await UpdatePreferenceKey(prefKey, existing); } if (eventType == PreferenceEventType.DeletePreferenceKeyEvent) { upsertedCount = await DeletePreferenceKey(prefKey, existing); } return(upsertedCount); }
/// <summary> /// Create, update or delete a user preference. /// </summary> private async Task <int> UpsertUserPreference(PreferenceEventType eventType, Guid?prefKeyUID, string prefKeyName, Guid userUID, string schemaVersion = null, string prefJson = null) { // Look up the preference key to get the foreign key for user preferences var prefKey = await GetPreferenceKey(prefKeyUID, prefKeyName); if (prefKey == null) { return(0); } var userPref = new UserPrefDataModel { PreferenceKeyID = prefKey.PreferenceKeyID, SchemaVersion = schemaVersion, UserUID = userUID.ToString(), PreferenceJson = prefJson }; var upsertedCount = 0; var existing = await GetUserPreference(userUID, prefKey.PreferenceKeyID); if (eventType == PreferenceEventType.CreateUserPreferenceEvent) { upsertedCount = await CreateUserPreference(userPref, existing); } if (eventType == PreferenceEventType.UpdateUserPreferenceEvent) { upsertedCount = await UpdateUserPreference(userPref, existing); } if (eventType == PreferenceEventType.DeleteUserPreferenceEvent) { upsertedCount = await DeleteUserPreference(userPref, existing); } return(upsertedCount); }