Exemple #1
0
        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);
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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;
        }