diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-05 16:24:46 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-05 16:24:46 -0400 |
| commit | f4f3d1255e34bced614e125dc8d8b05c29e41ead (patch) | |
| tree | 8a386406bd7ae63e3de2e52ba8499e0efb98f299 | |
| parent | 23c8a91976922ca73a62910090881e677dc4f4f8 (diff) | |
fix display preferences save
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs index 5f6ac39ee..c6f35a978 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs @@ -95,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.ArgumentNullException">item</exception> - public Task SaveDisplayPreferences(DisplayPreferences displayPreferences, CancellationToken cancellationToken) + public async Task SaveDisplayPreferences(DisplayPreferences displayPreferences, CancellationToken cancellationToken) { if (displayPreferences == null) { @@ -111,19 +111,36 @@ namespace MediaBrowser.Server.Implementations.Sqlite } cancellationToken.ThrowIfCancellationRequested(); - - return Task.Run(() => + + var serialized = _protobufSerializer.SerializeToBytes(displayPreferences); + + cancellationToken.ThrowIfCancellationRequested(); + + var cmd = connection.CreateCommand(); + cmd.CommandText = "replace into displaypreferences (id, data) values (@1, @2)"; + cmd.AddParam("@1", displayPreferences.Id); + cmd.AddParam("@2", serialized); + + using (var tran = connection.BeginTransaction()) { - var serialized = _protobufSerializer.SerializeToBytes(displayPreferences); + try + { + cmd.Transaction = tran; - cancellationToken.ThrowIfCancellationRequested(); + await cmd.ExecuteNonQueryAsync(cancellationToken); - var cmd = connection.CreateCommand(); - cmd.CommandText = "replace into displaypreferences (id, data) values (@1, @3)"; - cmd.AddParam("@1", displayPreferences.Id); - cmd.AddParam("@2", serialized); - QueueCommand(cmd); - }); + tran.Commit(); + } + catch (OperationCanceledException) + { + tran.Rollback(); + } + catch (Exception e) + { + Logger.ErrorException("Failed to commit transaction.", e); + tran.Rollback(); + } + } } /// <summary> |
