public static async Task InitializeRandomAsync(this ITableColumn tableColumn, Authentication authentication)
        {
            var template = tableColumn.Template;
            var table    = tableColumn.Template.Target;

            if (RandomUtility.Within(75) == true)
            {
                await tableColumn.SetDataTypeAsync(authentication, CremaDataTypeUtility.GetBaseTypeNames().Random(item => item != typeof(bool).GetTypeName()));
            }
            else
            {
                await tableColumn.SetDataTypeAsync(authentication, template.SelectableTypes.Random());
            }

            if (template.Count == 0)
            {
                await tableColumn.SetIsKeyAsync(authentication, true);
            }
            else if (RandomUtility.Within(10) && tableColumn.DataType != typeof(bool).GetTypeName())
            {
                await tableColumn.SetIsKeyAsync(authentication, true);

                await tableColumn.SetIsUniqueAsync(authentication, RandomUtility.Within(75));
            }

            if (RandomUtility.Within(25) && tableColumn.DataType != typeof(bool).GetTypeName())
            {
                var unique = RandomUtility.Within(75);
                if (unique != false || template.PrimaryKey.Count() != 1)
                {
                    await tableColumn.SetIsUniqueAsync(authentication, unique);
                }
            }

            if (RandomUtility.Within(25) == true)
            {
                await tableColumn.SetCommentAsync(authentication, RandomUtility.NextString());
            }

            if (RandomUtility.Within(25) == true)
            {
                await tableColumn.SetDefaultValueAsync(authentication, await tableColumn.GetRandomStringAsync());
            }

            if (CremaDataTypeUtility.CanUseAutoIncrement(tableColumn.DataType) == true && tableColumn.DefaultValue == null)
            {
                await tableColumn.SetAutoIncrementAsync(authentication, RandomUtility.NextBoolean());
            }

            if (RandomUtility.Within(5) == true)
            {
                await tableColumn.SetIsReadOnlyAsync(authentication, true);
            }
        }
示例#2
0
 public async Task SetIsKeyAsync(ITableColumn column, TaskContext context)
 {
     var authentication = context.Authentication;
     var isKey          = RandomUtility.NextBoolean();
     await column.SetIsKeyAsync(authentication, isKey);
 }