aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Synchronization/Local
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-27 13:16:00 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-27 13:16:00 +0200
commitaf8530c50d90c12ebe60383e67101920760c314f (patch)
tree53e8f091a3cd8dc2235b38db527ef7798b9c347c /Software/Visual_Studio/Tango.Synchronization/Local
parent9d12fd0ba222619dd5b42816ed004c7b762809dd (diff)
downloadTango-af8530c50d90c12ebe60383e67101920760c314f.tar.gz
Tango-af8530c50d90c12ebe60383e67101920760c314f.zip
Fixed issue with local sync SQL Logic error.
Added some missing columns to SQLite db. Direct Remote Sync is fully working !!!
Diffstat (limited to 'Software/Visual_Studio/Tango.Synchronization/Local')
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/ExtensionMethods.cs2
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs27
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs8
3 files changed, 32 insertions, 5 deletions
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/ExtensionMethods.cs b/Software/Visual_Studio/Tango.Synchronization/Local/ExtensionMethods.cs
index 8746f9146..89b3969e4 100644
--- a/Software/Visual_Studio/Tango.Synchronization/Local/ExtensionMethods.cs
+++ b/Software/Visual_Studio/Tango.Synchronization/Local/ExtensionMethods.cs
@@ -57,7 +57,7 @@ namespace Tango.Synchronization.Local
}
else
{
- if (def.Contains("randomblob") || def.Contains("localtime"))
+ if (def.ToLower().Contains("randomblob") || def.ToLower().Contains("datetime ('now')"))
{
def = def.Insert(0, "(");
def = def.Insert(def.Length - 1, ")");
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
index 7883f9cc8..79d3857ad 100644
--- a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
+++ b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
@@ -72,6 +72,33 @@ namespace Tango.Synchronization.Local
foreach (var masterTable in overwrite_tables)
{
LogManager.Log("Generating table overwrite difference for table " + masterTable.TableName);
+
+ var slaveTable = SlaveSQL.Tables.SingleOrDefault(x => x.TableName == masterTable.TableName); //Get matching slave table on slave db.
+
+ if (slaveTable == null) //Table not found on slave.
+ {
+ LogManager.Log("Table not found on slave, adding difference.");
+ //Clone table from slave db to master db including records!
+ diffs.Add(new Diff(DiffAction.AddTableToSlave, String.Format("Add table {0} to slave", masterTable.TableName), () => SlaveSQL.CloneTableFrom(MasterSQL, masterTable), SlaveSQL.GetCloneTableFromCommand(MasterSQL, masterTable)));
+ continue;
+ }
+
+ foreach (DataColumn masterColumn in masterTable.Columns)
+ {
+ LogManager.Log("Searching for column " + masterColumn.ColumnName + " on slave...");
+
+ var slaveColumn = slaveTable.Columns[masterColumn.ColumnName]; //Get matching slave column on slave table.
+
+ if (slaveColumn == null) //Slave column not found.
+ {
+ LogManager.Log("Column not found on slave, adding difference.");
+ //Add column to slave table.
+ diffs.Add(new Diff(DiffAction.AddColumnToSlave, String.Format("Add column {0} to slave table", masterColumn.ColumnName), () => SlaveSQL.AddColumn(masterTable, masterColumn), SlaveSQL.GetAddColumnCommand(masterTable, masterColumn)));
+ }
+
+ LogManager.Log("Column found.");
+ }
+
diffs.Add(new Diff(DiffAction.ReplaceTableDataInSlave, "Replace all rows on slave table " + masterTable.TableName, () =>
{
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs
index 6068d5b6c..2596853c6 100644
--- a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs
+++ b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs
@@ -247,13 +247,13 @@ namespace Tango.Synchronization.Local
public DataColumn AddColumn(DataTable table, DataColumn column)
{
var insertCommand = _connection.CreateCommand();
- insertCommand.CommandText = String.Format("ALTER TABLE {0} ADD COLUMN {1} {2} {3} {4} {5} {6}",
+ insertCommand.CommandText = String.Format("ALTER TABLE {0} ADD COLUMN {1} {2} {3} {4} {5}",
table.TableName,
column.ColumnName,
column.GetSQLType(),
table.PrimaryKey.Contains(column) ? "PRIMARY KEY" : null,
column.Unique ? "UNIQUE" : null,
- column.IsNotNull() ? "NOT NULL" : null,
+ //column.IsNotNull() ? "NOT NULL" : null,
column.HasDefaultValue() ? ("DEFAULT " + column.GetDefaultValue()) : null);
@@ -272,13 +272,13 @@ namespace Tango.Synchronization.Local
/// <returns></returns>
public String GetAddColumnCommand(DataTable table, DataColumn column)
{
- String cmd = String.Format("ALTER TABLE {0} ADD COLUMN {1} {2} {3} {4} {5} {6}",
+ String cmd = String.Format("ALTER TABLE {0} ADD COLUMN {1} {2} {3} {4} {5}",
table.TableName,
column.ColumnName,
column.GetSQLType(),
table.PrimaryKey.Contains(column) ? "PRIMARY KEY" : null,
column.Unique ? "UNIQUE" : null,
- column.IsNotNull() ? "NOT NULL" : null,
+ //column.IsNotNull() ? "NOT NULL" : null,
column.HasDefaultValue() ? ("DEFAULT " + column.GetDefaultValue()) : null);
return cmd;