Represents a column in SQL server
Beispiel #1
0
 public void GetSet_Identity()
 {
     var test = new Column();
     var d = new Identity(1, 1);
     test.Identity = d;
     Assert.Equal(d, test.Identity);
 }
Beispiel #2
0
 public void GetSet_Default()
 {
     var test = new Column();
     var d = new Default("", "");
     test.Default = d;
     Assert.Equal(d, test.Default);
 }
Beispiel #3
0
 public void GetSet_Length()
 {
     var test = new Column();
     var c = test.Length;
     test.Length = c + 1;
     Assert.Equal(c + 1, test.Length);
 }
Beispiel #4
0
 public void GetSet_Position()
 {
     var test = new Column();
     var c = test.Position;
     test.Position = c + 1;
     Assert.Equal(c + 1, test.Position);
 }
Beispiel #5
0
 public void GetSet_Scale()
 {
     var test = new Column();
     var c = test.Scale;
     test.Scale = c + 1;
     Assert.Equal(c + 1, test.Scale);
 }
Beispiel #6
0
 public void GetSet_Nullable()
 {
     var test = new Column();
     var c = test.Nullable;
     test.Nullable = !c;
     Assert.Equal(!c, test.Nullable);
 }
Beispiel #7
0
 public void Create_Column()
 {
     var c = new Column("testing", ColumnTypes.Bigint, true, null);
     var test = new Table("dbo", "test");
     test.Columns.Add(c);
     Assert.True(test.Columns.Items.Any(item => item.Name == "testing"));
 }
 public void Remove_Column()
 {
     var test = new Columns();
     var column = new Column("testing", ColumnTypes.Bigint, true, null);
     test.Add(column);
     test.Remove(column);
     Assert.False(test.Items.Any(item => item.Name == "testing"));
 }
Beispiel #9
0
 public void Create_Script()
 {
     var c = new Column("testing", ColumnTypes.Bigint, true, null);
     var cc = new Constraint("ix_testing", ContraintType.Index, "testing");
     var test = new Table("dbo", "test");
     test.Constraints.Add(cc);
     test.Columns.Add(c);
     //set the table reference
     foreach (var ccc in test.Constraints)
     {
         ccc.Table = test.Info;
     }
     Assert.Contains("dbo", test.Script());
     Assert.Contains("test", test.Script());
 }
        /// <summary>
        /// Creates the main table schema
        /// </summary>
        /// <returns></returns>
        private Table CreateMainTable()
        {
            //--main data table--
            var main = new Table(GetOwner(), _tableNameHelper.QueueName);
            var mainPrimaryKey = new Column("QueueID", ColumnTypes.Bigint, false, null) {Identity = new Identity(1, 1)};

            main.Columns.Add(mainPrimaryKey);
            main.Columns.Add(new Column("Body", ColumnTypes.Varbinary, -1, false, null));
            main.Columns.Add(new Column("Headers", ColumnTypes.Varbinary, -1, false, null));

            //add primary key constraint
            main.Constraints.Add(new Constraint("PK_" + _tableNameHelper.QueueName, ContraintType.PrimaryKey, "QueueID"));
            main.PrimaryKey.Clustered = true;
            main.PrimaryKey.Unique = true;
            return main;
        }
Beispiel #11
0
 public void GetSet_Types()
 {
     var test = new Column();
     foreach (ColumnTypes type in Enum.GetValues(typeof(ColumnTypes)))
     {
         test.Type = type;
         Assert.Equal(type, test.Type);
     }
 }
Beispiel #12
0
 public void GetSet_Name()
 {
     var test = new Column {Name = "test"};
     Assert.Equal("test", test.Name);
 }
Beispiel #13
0
        /// <summary>
        /// Adds a new column
        /// </summary>
        /// <param name="column">The column.</param>
		public void Add(Column column) 
        {
            _columns.Add(column);
		}
Beispiel #14
0
 public void GetSet_Precision()
 {
     var b = new byte();
     var test = new Column {Precision = b};
     Assert.Equal(b, test.Precision);
 }
Beispiel #15
0
        /// <summary>
        /// Removes the specified column.
        /// </summary>
        /// <param name="column">The column.</param>
        public void Remove(Column column) 
        {
            _columns.Remove(column);
		}
        private Table CreateStatusTable()
        {
            //--Meta Data Table --
            var status = new Table(GetOwner(), _tableNameHelper.StatusName);
            var mainPrimaryKey = new Column("QueueID", ColumnTypes.Bigint, false, null);
            status.Columns.Add(mainPrimaryKey);

            //add primary key constraint
            status.Constraints.Add(new Constraint("PK_" + _tableNameHelper.StatusName, ContraintType.PrimaryKey, "QueueID"));
            status.PrimaryKey.Unique = true;
            status.PrimaryKey.Clustered = true;

            status.Columns.Add(new Column("Status", ColumnTypes.Int, false, null));
            status.Columns.Add(new Column("CorrelationID", ColumnTypes.Uniqueidentifier, false, null));

            //add extra user columns
            foreach (var c in _options.Value.AdditionalColumns.Values)
            {
                status.Columns.Add(c);
            }

            //add extra user constrains
            foreach (var c in _options.Value.AdditionalConstraints.Values)
            {
                status.Constraints.Add(c);
            }

            //set the table reference
            foreach (var c in status.Constraints)
            {
                c.Table = status.Info;
            }

            return status;
        }
        /// <summary>
        /// Creates the meta data table schema.
        /// </summary>
        /// <returns></returns>
        private Table CreateMetaDataTable()
        {
            //--Meta Data Table --
            var meta = new Table(GetOwner(), _tableNameHelper.MetaDataName);
            var mainPrimaryKey = new Column("QueueID", ColumnTypes.Bigint, false, null);
            meta.Columns.Add(mainPrimaryKey);

            //add primary key constraint
            meta.Constraints.Add(new Constraint("PK_" + _tableNameHelper.MetaDataName, ContraintType.PrimaryKey, "QueueID"));
            meta.PrimaryKey.Unique = true;

            if (_options.Value.EnablePriority)
            {
                meta.Columns.Add(new Column("Priority", ColumnTypes.Tinyint, false, null));
            }

            meta.Columns.Add(new Column("QueuedDateTime", ColumnTypes.Datetime, false, null));

            if (_options.Value.EnableStatus)
            {
                meta.Columns.Add(new Column("Status", ColumnTypes.Int, false, null));
            }
            if (_options.Value.EnableDelayedProcessing)
            {
                meta.Columns.Add(new Column("QueueProcessTime", ColumnTypes.Datetime, false, null));
            }

            meta.Columns.Add(new Column("CorrelationID", ColumnTypes.Uniqueidentifier, false, null));

            if (_options.Value.EnableHeartBeat)
            {
                meta.Columns.Add(new Column("HeartBeat", ColumnTypes.Datetime, true, null));
            }

            if (_options.Value.EnableMessageExpiration || _options.Value.QueueType == QueueTypes.RpcReceive || _options.Value.QueueType == QueueTypes.RpcSend)
            {
                meta.Columns.Add(new Column("ExpirationTime", ColumnTypes.Datetime, false, null));
            }

            if (_options.Value.EnableRoute)
            {
                meta.Columns.Add(new Column("Route", ColumnTypes.Varchar, 255, true, null));
            }

            switch (_options.Value.QueueType)
            {
                case QueueTypes.RpcReceive:
                    meta.Columns.Add(new Column("SourceQueueID", ColumnTypes.Bigint, false, null));
                    break;
            }

            var clusterIndex = new List<string>();
            if (_options.Value.EnableStatus)
            {
                clusterIndex.Add("Status");
            }
            if (_options.Value.EnablePriority)
            {
                clusterIndex.Add("Priority");
            }
            if (_options.Value.EnableDelayedProcessing)
            {
                clusterIndex.Add("QueueProcessTime");
            }
            if (_options.Value.EnableRoute)
            {
                clusterIndex.Add("Route");
            }
                //add index on expiration time if needed
            if (_options.Value.EnableMessageExpiration || _options.Value.QueueType == QueueTypes.RpcReceive || _options.Value.QueueType == QueueTypes.RpcSend)
            {
                clusterIndex.Add("ExpirationTime");
            }

            switch (_options.Value.QueueType)
            {
                case QueueTypes.RpcReceive:
                    clusterIndex.Add("SourceQueueID");
                    break;
            }

            if (clusterIndex.Count > 0)
            {
                clusterIndex.Add("QueueID");
                var cluster = new Constraint("IX_DeQueue", ContraintType.Index, clusterIndex)
                {
                    Clustered = true,
                    Unique = true
                };
                meta.Constraints.Add(cluster);
            }
            else //this is a FIFO queue, just cluster on the primary key
            {
                meta.PrimaryKey.Clustered = true;
            }

            //add index on heartbeat column if enabled
            if (_options.Value.EnableHeartBeat)
            {
                meta.Constraints.Add(new Constraint("IX_HeartBeat", ContraintType.Index, "HeartBeat"));
            }

            //set the table reference
            foreach (var c in meta.Constraints)
            {
                c.Table = meta.Info;
            }

            return meta;
        }
        /// <summary>
        /// Creates the error tracking table schema.
        /// </summary>
        /// <returns></returns>
        private Table CreateErrorTrackingTable()
        {
            //--Error tracking table--
            var errorTracking = new Table(GetOwner(), _tableNameHelper.ErrorTrackingName);
            var errorTrackingPrimaryKey = new Column("ErrorTrackingID", ColumnTypes.Bigint, false, null)
            {
                Identity = new Identity(1, 1)
            };
            errorTracking.Columns.Add(errorTrackingPrimaryKey);

            errorTracking.Columns.Add(new Column("QueueID", ColumnTypes.Bigint, false, null));
            errorTracking.Columns.Add(new Column("ExceptionType", ColumnTypes.Varchar, 500, false, null));
            errorTracking.Columns.Add(new Column("RetryCount", ColumnTypes.Int, false, null));

            //add primary key constraint
            errorTracking.Constraints.Add(new Constraint("PK_" + _tableNameHelper.ErrorTrackingName, ContraintType.PrimaryKey, "ErrorTrackingID"));
            errorTracking.PrimaryKey.Clustered = true;
            errorTracking.PrimaryKey.Unique = true;

            errorTracking.Constraints.Add(new Constraint("IX_QueueID", ContraintType.Index, "QueueID"));

            foreach (var c in errorTracking.Constraints)
            {
                c.Table = errorTracking.Info;
            }

            return errorTracking;
        }
        /// <summary>
        /// Creates the error table schema. This is a copy of the meta table, but with an exception column added. 
        /// </summary>
        /// <param name="meta">The meta.</param>
        /// <returns></returns>
        private Table CreateErrorTable(Table meta)
        {
            var metaErrors = new Table(GetOwner(), _tableNameHelper.MetaDataErrorsName);
            var primaryKey = new Column("ID", ColumnTypes.Bigint, false, null) {Identity = new Identity(1, 1)};
            metaErrors.Columns.Add(primaryKey);
            foreach (var c in meta.Columns.Items)
            {
                metaErrors.Columns.Add(c.Clone());
            }
            metaErrors.Columns.Add(new Column("LastException", ColumnTypes.Varchar, -1, true, null));
            metaErrors.Columns.Add(new Column("LastExceptionDate", ColumnTypes.Datetime, true, null));

            //add primary key constraint
            metaErrors.Constraints.Add(new Constraint("PK_" + _tableNameHelper.MetaDataErrorsName, ContraintType.PrimaryKey, "ID"));
            metaErrors.PrimaryKey.Clustered = true;
            metaErrors.PrimaryKey.Unique = true;

            //NOTE no indexes are copied from the meta table
            foreach (var c in metaErrors.Constraints)
            {
                c.Table = metaErrors.Info;
            }

            return metaErrors;
        }
Beispiel #20
0
        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns></returns>
        public Column Clone()
        {
            var rc = new Column {Default = Default};

            if (Identity != null)
            {
                rc.Identity = Identity.Clone();
            }
            rc.Nullable = Nullable;
            rc.Length = Length;
            rc.Name = Name;
            rc.Position = Position;
            rc.Precision = Precision;
            rc.Scale = Scale;
            rc.Type = Type;
            return rc;
        }
        /// <summary>
        /// Creates the configuration table schema.
        /// </summary>
        /// <returns></returns>
        private Table CreateConfigurationTable()
        {
            var table = new Table(GetOwner(), _tableNameHelper.ConfigurationName);
            var mainPrimaryKey = new Column("ID", ColumnTypes.Int, false, null) {Identity = new Identity(1, 1)};
            table.Columns.Add(mainPrimaryKey);
            table.Columns.Add(new Column("Configuration", ColumnTypes.Varbinary, -1, false, null));

            table.Constraints.Add(new Constraint("PK_" + _tableNameHelper.ConfigurationName, ContraintType.PrimaryKey, "ID"));
            table.PrimaryKey.Clustered = true;
            table.PrimaryKey.Unique = true;
            return table;
        }