ManagedConnection.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Threading;
  5. using SQLitePCL.pretty;
  6. namespace Emby.Server.Implementations.Data
  7. {
  8. public class ManagedConnection : IDisposable
  9. {
  10. private SQLiteDatabaseConnection? _db;
  11. private readonly SemaphoreSlim _writeLock;
  12. private bool _disposed = false;
  13. public ManagedConnection(SQLiteDatabaseConnection db, SemaphoreSlim writeLock)
  14. {
  15. _db = db;
  16. _writeLock = writeLock;
  17. }
  18. public IStatement PrepareStatement(string sql)
  19. {
  20. return _db.PrepareStatement(sql);
  21. }
  22. public IEnumerable<IStatement> PrepareAll(string sql)
  23. {
  24. return _db.PrepareAll(sql);
  25. }
  26. public void ExecuteAll(string sql)
  27. {
  28. _db.ExecuteAll(sql);
  29. }
  30. public void Execute(string sql, params object[] values)
  31. {
  32. _db.Execute(sql, values);
  33. }
  34. public void RunQueries(string[] sql)
  35. {
  36. _db.RunQueries(sql);
  37. }
  38. public void RunInTransaction(Action<IDatabaseConnection> action, TransactionMode mode)
  39. {
  40. _db.RunInTransaction(action, mode);
  41. }
  42. public T RunInTransaction<T>(Func<IDatabaseConnection, T> action, TransactionMode mode)
  43. {
  44. return _db.RunInTransaction(action, mode);
  45. }
  46. public IEnumerable<IReadOnlyList<ResultSetValue>> Query(string sql)
  47. {
  48. return _db.Query(sql);
  49. }
  50. public IEnumerable<IReadOnlyList<ResultSetValue>> Query(string sql, params object[] values)
  51. {
  52. return _db.Query(sql, values);
  53. }
  54. public void Dispose()
  55. {
  56. if (_disposed)
  57. {
  58. return;
  59. }
  60. _writeLock.Release();
  61. _db = null; // Don't dispose it
  62. _disposed = true;
  63. }
  64. }
  65. }