/// <summary> /// Gets the default appearance for the given character, or creates one if one does not exist. /// </summary> /// <param name="character">The character.</param> /// <param name="ct">The cancellation token in use.</param> /// <returns>A retrieval result which may or may not have succeeded.</returns> public async Task <Result <Appearance> > GetOrCreateDefaultAppearanceAsync ( Character character, CancellationToken ct = default ) { var getDefaultAppearance = await GetDefaultAppearanceAsync(character, ct); if (getDefaultAppearance.IsSuccess) { return(getDefaultAppearance); } var createDefaultAppearanceResult = await Appearance.CreateDefaultAsync(character, this); if (!createDefaultAppearanceResult.IsSuccess) { return(Result <Appearance> .FromError(createDefaultAppearanceResult)); } var defaultAppearance = createDefaultAppearanceResult.Entity; defaultAppearance.IsDefault = true; _database.Appearances.Update(defaultAppearance); await _database.SaveChangesAsync(ct); return(defaultAppearance); }
/// <summary> /// Gets the default appearance for the given character, or creates one if one does not exist. /// </summary> /// <param name="character">The character.</param> /// <returns>A retrieval result which may or may not have succeeded.</returns> public async Task <RetrieveEntityResult <Appearance> > GetOrCreateDefaultAppearanceAsync ( Character character ) { var getDefaultAppearance = await GetDefaultAppearanceAsync(character); if (getDefaultAppearance.IsSuccess) { return(getDefaultAppearance); } var createDefaultAppearanceResult = await Appearance.CreateDefaultAsync(character, this); if (!createDefaultAppearanceResult.IsSuccess) { return(RetrieveEntityResult <Appearance> .FromError(createDefaultAppearanceResult)); } var defaultAppearance = createDefaultAppearanceResult.Entity; defaultAppearance.IsDefault = true; _database.Appearances.Update(defaultAppearance); await _database.SaveChangesAsync(); // Requery the database return(await GetOrCreateDefaultAppearanceAsync(character)); }