mirror of
https://github.com/AntonyCorbett/JWLMerge
synced 2026-01-16 23:04:47 -05:00
Fix database
This commit is contained in:
@@ -42,17 +42,16 @@
|
||||
/// <param name="dataToUse">The data to use.</param>
|
||||
public void PopulateTables(Database dataToUse)
|
||||
{
|
||||
using (var connection = CreateConnection())
|
||||
{
|
||||
PopulateTable(connection, dataToUse.Locations);
|
||||
PopulateTable(connection, dataToUse.Notes);
|
||||
PopulateTable(connection, dataToUse.InputFields);
|
||||
PopulateTable(connection, dataToUse.UserMarks);
|
||||
PopulateTable(connection, dataToUse.Tags);
|
||||
PopulateTable(connection, dataToUse.TagMaps);
|
||||
PopulateTable(connection, dataToUse.BlockRanges);
|
||||
PopulateTable(connection, dataToUse.Bookmarks);
|
||||
}
|
||||
using var connection = CreateConnection();
|
||||
|
||||
PopulateTable(connection, dataToUse.Locations);
|
||||
PopulateTable(connection, dataToUse.UserMarks);
|
||||
PopulateTable(connection, dataToUse.Tags);
|
||||
PopulateTable(connection, dataToUse.Notes);
|
||||
PopulateTable(connection, dataToUse.TagMaps);
|
||||
PopulateTable(connection, dataToUse.InputFields);
|
||||
PopulateTable(connection, dataToUse.Bookmarks);
|
||||
PopulateTable(connection, dataToUse.BlockRanges);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -134,7 +133,7 @@
|
||||
|
||||
private static SqliteConnection CreateConnection(string filePath)
|
||||
{
|
||||
var connectionString = $"Data Source={filePath};Version=3;";
|
||||
var connectionString = $"Data Source={filePath};";
|
||||
Log.Logger.Debug("SQL create connection: {connection}", connectionString);
|
||||
|
||||
var connection = new SqliteConnection(connectionString);
|
||||
@@ -144,15 +143,15 @@
|
||||
|
||||
private static void ClearData(SqliteConnection connection)
|
||||
{
|
||||
ClearTable(connection, "UserMark");
|
||||
ClearTable(connection, "TagMap");
|
||||
ClearTable(connection, "Tag");
|
||||
ClearTable(connection, "InputField");
|
||||
ClearTable(connection, "Note");
|
||||
ClearTable(connection, "Location");
|
||||
ClearTable(connection, "Bookmark");
|
||||
ClearTable(connection, "BlockRange");
|
||||
|
||||
ClearTable(connection, "Bookmark");
|
||||
ClearTable(connection, "InputField");
|
||||
ClearTable(connection, "TagMap");
|
||||
ClearTable(connection, "Note");
|
||||
ClearTable(connection, "Tag");
|
||||
ClearTable(connection, "UserMark");
|
||||
ClearTable(connection, "Location");
|
||||
|
||||
UpdateLastModified(connection);
|
||||
|
||||
VacuumDatabase(connection);
|
||||
@@ -199,21 +198,18 @@
|
||||
var paramNames = GetParamNames(columnNames);
|
||||
var paramNamesCsv = string.Join(",", paramNames);
|
||||
|
||||
using (var transaction = connection.BeginTransaction())
|
||||
using var transaction = connection.BeginTransaction();
|
||||
|
||||
foreach (var row in rows)
|
||||
{
|
||||
foreach (var row in rows)
|
||||
{
|
||||
using (var cmd = connection.CreateCommand())
|
||||
{
|
||||
cmd.CommandText = $"insert into {tableName} ({columnNamesCsv}) values ({paramNamesCsv})";
|
||||
AddPopulateTableParams(cmd, columnNames, paramNames, row);
|
||||
using var cmd = connection.CreateCommand();
|
||||
cmd.CommandText = $"insert into {tableName} ({columnNamesCsv}) values ({paramNamesCsv})";
|
||||
AddPopulateTableParams(cmd, columnNames, paramNames, row);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
transaction.Commit();
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
transaction.Commit();
|
||||
}
|
||||
|
||||
private static void AddPopulateTableParams<TRowType>(
|
||||
@@ -224,7 +220,7 @@
|
||||
{
|
||||
for (int n = 0; n < columnNames.Count; ++n)
|
||||
{
|
||||
var value = row.GetType().GetProperty(columnNames[n])?.GetValue(row);
|
||||
var value = row.GetType().GetProperty(columnNames[n])?.GetValue(row) ?? DBNull.Value;
|
||||
cmd.Parameters.AddWithValue(paramNames[n], value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,8 @@ namespace JWLMerge
|
||||
{
|
||||
ConfigureServices();
|
||||
|
||||
ConfigureLogger();
|
||||
|
||||
if (AnotherInstanceRunning())
|
||||
{
|
||||
Shutdown();
|
||||
@@ -45,7 +47,6 @@ namespace JWLMerge
|
||||
{
|
||||
// disable hardware (GPU) rendering so that it's all done by the CPU...
|
||||
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
|
||||
ConfigureLogger();
|
||||
}
|
||||
|
||||
Current.DispatcherUnhandledException += CurrentDispatcherUnhandledException;
|
||||
@@ -114,7 +115,7 @@ namespace JWLMerge
|
||||
|
||||
Log.Logger = new LoggerConfiguration()
|
||||
.MinimumLevel.Debug()
|
||||
.WriteTo.File(Path.Combine(folder, "log-{Date}.txt"), retainedFileCountLimit: 28)
|
||||
.WriteTo.File(Path.Combine(folder, "log.txt"), rollingInterval: RollingInterval.Day, retainedFileCountLimit: 28)
|
||||
.CreateLogger();
|
||||
|
||||
Log.Logger.Information("==== Launched ====");
|
||||
|
||||
Reference in New Issue
Block a user