/Horizon/Database/SnapshotDatabase.cs |
@@ -98,6 +98,7 @@ |
|
private readonly CancellationTokenSource _cancellationTokenSource; |
private readonly SemaphoreSlim _databaseLock; |
private readonly SQLiteConnectionStringBuilder _sqliteConnectionStringBuilder; |
|
#endregion |
|
@@ -108,6 +109,11 @@ |
Directory.CreateDirectory(Constants.DatabaseDirectory); |
|
_databaseLock = new SemaphoreSlim(1, 1); |
|
_sqliteConnectionStringBuilder = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
} |
|
public SnapshotDatabase(CancellationToken cancellationToken) : this() |
@@ -118,8 +124,6 @@ |
CancellationTokenSource.CreateLinkedTokenSource(localCancellationToken, cancellationToken); |
_cancellationToken = combinedCancellationTokenSource.Token; |
|
|
|
CreateDatabase(_cancellationToken).ContinueWith(async createDatabaseTask => |
{ |
try |
@@ -202,16 +206,11 @@ |
|
public async Task NormalizeTime(string hash, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = |
new SQLiteConnection(connectionString.ConnectionString)) |
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -285,15 +284,10 @@ |
|
public async Task<long> CountSnapshots(CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -330,16 +324,11 @@ |
|
public async IAsyncEnumerable<Snapshot> LoadSnapshots([EnumeratorCancellation] CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = |
new SQLiteConnection(connectionString.ConnectionString)) |
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -389,16 +378,11 @@ |
|
public async Task CreateSnapshot(string name, string path, Color color, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = |
new SQLiteConnection(connectionString.ConnectionString)) |
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -537,16 +521,11 @@ |
public async Task CreateSnapshot(string name, string path, |
Bitmap shot, Color color, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = |
new SQLiteConnection(connectionString.ConnectionString)) |
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -715,15 +694,10 @@ |
|
public async Task SaveFile(string path, string hash, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -778,15 +752,10 @@ |
|
public async Task RevertFile(string name, string hash, CancellationToken cancellationToken, bool atomic = true) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -903,15 +872,10 @@ |
|
public async Task RemoveFileFast(IEnumerable<string> hashes, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -961,14 +925,10 @@ |
|
public async Task RemoveFile(string hash, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1009,16 +969,11 @@ |
|
public async Task UpdateColor(string hash, Color color, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
|
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1060,15 +1015,10 @@ |
|
public async Task RemoveColor(string hash, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1109,15 +1059,10 @@ |
|
public async Task<SnapshotPreview> RetrievePreview(string hash, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1175,15 +1120,10 @@ |
|
public async Task<MemoryStream> RetrieveFileStream(string hash, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1239,15 +1179,10 @@ |
|
public async Task RelocateFile(string hash, string path, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1290,15 +1225,10 @@ |
|
public async Task UpdateNote(string hash, string note, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1344,17 +1274,12 @@ |
|
public async Task<string> UpdateFile(string hash, byte[] data, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var dataMemoryStream = new MemoryStream(data)) |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1469,15 +1394,10 @@ |
|
public async Task UpdateHash(string from, string to, CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1523,16 +1443,11 @@ |
|
private async Task SetAutoVacuum(CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = |
new SQLiteConnection(connectionString.ConnectionString)) |
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|
@@ -1551,15 +1466,10 @@ |
|
private async Task CreateDatabase(CancellationToken cancellationToken) |
{ |
var connectionString = new SQLiteConnectionStringBuilder |
{ |
ConnectionString = DatabaseConnectionString |
}; |
|
await _databaseLock.WaitAsync(cancellationToken); |
try |
{ |
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString)) |
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString)) |
{ |
await sqliteConnection.OpenAsync(cancellationToken); |
|