private List <string> ExtractCommonData(string srcDBName, string destDBName, List <TableDefinition> definitions)
        {
            List <string> sqlCommandList = new List <string>();

            TableNames.Where(tableName => !IsTableMatched(tableName, definitions)).ToList().ForEach(tableName =>
            {
                // copy table now.
                string sqlCommandText = $"CREATE TABLE IF NOT EXISTS `{destDBName}`.`{tableName}` LIKE `{srcDBName}`.`{tableName}`; INSERT INTO `{destDBName}`.`{tableName}` SELECT {tableName}.* FROM `{srcDBName}`.`{tableName}`";

                sqlCommandList.Add(sqlCommandText);
            });

            return(sqlCommandList);
        }
        private List <string> ExtractUnitData(string srcDBName, string destDBName, List <TableDefinition> definitions, Dictionary <string, object> unitDataDictionary)
        {
            List <string> sqlCommandList = new List <string>();

            TableNames.Where(tableName => IsTableMatched(tableName, definitions)).ToList().ForEach(tableName =>
            {
                var filteredDefinitions = GetMatchedTableDefinitions(tableName, definitions);

                filteredDefinitions.ForEach(definition =>
                {
                    if (definition.Type == DefinitionType.Skip)
                    {
                        return;  // Skip: continue to next definition.
                    }

                    // Default: Copy whole table.
                    string sqlCommandText = $"CREATE TABLE IF NOT EXISTS `{destDBName}`.`{tableName}` LIKE `{srcDBName}`.`{tableName}`; " +
                                            $"INSERT INTO `{destDBName}`.`{tableName}` " +
                                            $"SELECT {tableName}.* FROM `{srcDBName}`.`{tableName}` ";

                    // Extract: Append Join & Where
                    if (definition.Type == DefinitionType.Extract)
                    {
                        string value            = unitDataDictionary[definition.Value].ToString();
                        string extraWhereClause = string.IsNullOrWhiteSpace(definition.ExtraWhereClause) ? "" : $"AND {definition.ExtraWhereClause}";

                        if (string.IsNullOrWhiteSpace(definition.DataClassTable))
                        {
                            sqlCommandText += $"JOIN `{srcDBName}`.`{definition.ForeignTable}` ON {tableName}.{definition.ForeignKey} =  {definition.ForeignTablePrimaryKey} " +
                                              $"WHERE {definition.Filter} {definition.Operator} '{value}' {extraWhereClause}";
                        }
                        else
                        {
                            // If DataClassTable exists:
                            // SELECT * FROM Table
                            // JOIN DataClassTable ON Table.dataId = DataClassTable.id
                            // JOIN ForeignTable ON DataClassTable.Column = ForeignTable.FK
                            sqlCommandText += $"JOIN `{srcDBName}`.`{definition.DataClassTable}` ON {tableName}.dataId = {definition.DataClassTable}.id " +
                                              $"JOIN `{srcDBName}`.`{definition.ForeignTable}` ON {definition.DataClassTable}.{definition.ForeignKey} = {definition.ForeignTablePrimaryKey} " +
                                              $"WHERE {definition.Filter} {definition.Operator} '{value}' {extraWhereClause}";
                        }
                    }

                    sqlCommandList.Add(sqlCommandText);
                });
            });

            return(sqlCommandList);
        }
Example #3
0
        public CodeTableEntries this[string key]
        {
            get
            {
                if (!_tableEntriesDict.ContainsKey(key))
                {
                    KeyValuePair <int, string> table = TableNames.Where(t => t.Value.Equals(key)).FirstOrDefault();

                    if (!table.Equals(default(KeyValuePair <int, string>)))
                    {
                        _tableEntriesDict.Add(table.Value, new CodeTableEntries(table.Key));
                    }
                }
                return(_tableEntriesDict[key]);
            }
        }