diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-27 13:16:00 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-27 13:16:00 +0200 |
| commit | af8530c50d90c12ebe60383e67101920760c314f (patch) | |
| tree | 53e8f091a3cd8dc2235b38db527ef7798b9c347c /Software/Visual_Studio/Tango.Synchronization/Local | |
| parent | 9d12fd0ba222619dd5b42816ed004c7b762809dd (diff) | |
| download | Tango-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')
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; |
