public LinkInfo Build(string schema, string name, Tuple<string, string> anchorId, Tuple<string, string> infoId, Tuple<string, string> dateId, IEnumerable<Tuple<string, string>> filters) { var tableName = new ObjectIdentifier(new string[] { schema, name }); var foreignKeyColumns = new List<TSqlColumn>(); var sqlDataTypeFactory = new TSqlDataTypeFactory(); var sqlDataType = sqlDataTypeFactory.Build(anchorId.Item2); var columnFactory = new ColumnFactory(); var anchorKey = columnFactory.Build(anchorId.Item1, sqlDataType); foreignKeyColumns.Add(anchorKey); sqlDataType = sqlDataTypeFactory.Build(infoId.Item2); var infoKey = columnFactory.Build(infoId.Item1, sqlDataType); foreignKeyColumns.Add(infoKey); sqlDataType = sqlDataTypeFactory.Build(dateId.Item2); var dateKey = columnFactory.Build(dateId.Item1, sqlDataType); foreignKeyColumns.Add(dateKey); var uniqueKeyColumns = new TSqlColumnList(); uniqueKeyColumns.Add(anchorKey); uniqueKeyColumns.Add(dateKey); var filterColumns = new List<TSqlColumn>(); foreach (var filter in filters) { sqlDataType = sqlDataTypeFactory.Build(filter.Item2); var column = columnFactory.Build(filter.Item1, sqlDataType); filterColumns.Add(column); } var link = new LinkInfo() { Name = tableName, UniqueKey = uniqueKeyColumns, DateKey = dateKey, AnchorKey = anchorKey, InfoKey = infoKey, ForeignKeys = foreignKeyColumns, Filters = filterColumns }; return link; }
public Info Build(string schema, string name, string suffix, Tuple<string, string> key, IEnumerable<Tuple<string, string>> fields) { var tableName = new ObjectIdentifier(new string[] { schema, name + suffix }); var identity = new IdentityFactory().Build(name + suffix + "Id"); var fieldColumns = new List<TSqlColumn>(); var sqlDataTypeFactory = new TSqlDataTypeFactory(); var columnFactory = new ColumnFactory(); TSqlDataType sqlDataType; TSqlColumn keyColumn = null; if (key!=null) { sqlDataType = sqlDataTypeFactory.Build(key.Item2); keyColumn = columnFactory.Build(key.Item1, sqlDataType); } foreach (var field in fields) { var fieldName = field.Item1; sqlDataType = sqlDataTypeFactory.Build(field.Item2); var column = columnFactory.Build(fieldName, sqlDataType); fieldColumns.Add(column); } var info = new Info() { Name = tableName, Identity = identity, Fields = fieldColumns }; return info; }
public Anchor Build(string schema, string name, IEnumerable<Tuple<string, string>> businessKeys) { var businessKeyColumns = new List<TSqlColumn>(); foreach (var businessKey in businessKeys) { var businessKeyName = businessKey.Item1; var sqlDataTypeFactory = new TSqlDataTypeFactory(); var sqlDataType = sqlDataTypeFactory.Build(businessKey.Item2); var columnFactory = new ColumnFactory(); var column = columnFactory.Build(businessKeyName, sqlDataType); businessKeyColumns.Add(column); } return Build(schema, name, businessKeyColumns); }
public Link Build(string schema, string name, IEnumerable<Tuple<string, string>> anchors, Tuple<string, string> dateId, IEnumerable<Tuple<string, string>> filters) { var tableName = new ObjectIdentifier(new string[] { schema, name }); var anchorsColumns = new List<TSqlColumn>(); var sqlDataTypeFactory = new TSqlDataTypeFactory(); TSqlDataType sqlDataType; var columnFactory = new ColumnFactory(); foreach (var anchor in anchors) { sqlDataType = sqlDataTypeFactory.Build(anchor.Item2); var column = columnFactory.Build(anchor.Item1, sqlDataType); anchorsColumns.Add(column); } sqlDataType = sqlDataTypeFactory.Build(dateId.Item2); var dateColumn = columnFactory.Build(dateId.Item1, sqlDataType); var filterColumns = new List<TSqlColumn>(); foreach (var filter in filters) { sqlDataType = sqlDataTypeFactory.Build(filter.Item2); var column = columnFactory.Build(filter.Item1, sqlDataType); filterColumns.Add(column); } anchorsColumns.Add(dateColumn); var link = new Link() { Name = tableName, ForeignKeys = anchorsColumns, DateKey = dateColumn, Filters = filterColumns }; return link; }