예제 #1
0
        private static async Task InitializeRandomItemsStandardAsync(this IDataBase dataBase, Authentication authentication, DataBaseSettings settings)
        {
            var typeContext  = dataBase.GetService(typeof(ITypeContext)) as ITypeContext;
            var tableContext = dataBase.GetService(typeof(ITableContext)) as ITableContext;
            await typeContext.AddRandomItemsAsync(authentication, settings);

            await tableContext.AddRandomItemsAsync(authentication, settings);
        }
예제 #2
0
 public static async Task InitializeRandomItemsAsync(this IDataBase dataBase, Authentication authentication, DataBaseSettings settings)
 {
     if (settings.Transaction == true)
     {
         await InitializeRandomItemsTransactionAsync(dataBase, authentication, settings);
     }
     else
     {
         await InitializeRandomItemsStandardAsync(dataBase, authentication, settings);
     }
 }
예제 #3
0
        public static async Task <ITable> AddRandomChildTableAsync(this ITable table, Authentication authentication, DataBaseSettings settings)
        {
            var copyData = RandomUtility.NextBoolean();
            var template = await table.NewTableAsync(authentication);

            await template.InitializeRandomAsync(authentication);

            await template.EndEditAsync(authentication);

            if (template.Target is ITable[] tables)
            {
                foreach (var item in tables)
                {
                    var minCount = settings.TableContext.MinRowCount;
                    var maxCount = settings.TableContext.MaxRowCount;
                    var count    = RandomUtility.Next(minCount, maxCount);
                    await AddRandomRowsAsync(item, authentication, count);
                }
                return(tables.First());
            }
            else
            {
                throw new NotImplementedException();
            }
        }
예제 #4
0
        private static async Task InitializeRandomItemsTransactionAsync(this IDataBase dataBase, Authentication authentication, DataBaseSettings settings)
        {
            var trans = await dataBase.BeginTransactionAsync(authentication);

            try
            {
                var typeContext  = dataBase.GetService(typeof(ITypeContext)) as ITypeContext;
                var tableContext = dataBase.GetService(typeof(ITableContext)) as ITableContext;
                await typeContext.AddRandomItemsAsync(authentication, settings);

                await tableContext.AddRandomItemsAsync(authentication, settings);

                await trans.CommitAsync(authentication);
            }
            catch (Exception e)
            {
                await trans.RollbackAsync(authentication);

                throw e;
            }
        }
예제 #5
0
 public static async Task AddRandomItemsAsync(this ITypeContext typeContext, Authentication authentication, DataBaseSettings settings)
 {
     await AddRandomCategoriesAsync(typeContext, authentication, settings);
     await AddRandomTypesAsync(typeContext, authentication, settings);
 }
예제 #6
0
        public static async Task AddRandomTypesAsync(this ITypeContext typeContext, Authentication authentication, DataBaseSettings settings)
        {
            var minCount       = settings.TypeContext.MinTypeCount;
            var maxCount       = settings.TypeContext.MaxTypeCount;
            var count          = RandomUtility.Next(minCount, maxCount);
            var typeCollection = typeContext.GetService(typeof(ITypeCollection)) as ITypeCollection;

            while (typeCollection.Count < count)
            {
                await AddRandomTypeAsync(typeContext, authentication);
            }
        }
예제 #7
0
        public static async Task AddRandomCategoriesAsync(this ITableContext tableContext, Authentication authentication, DataBaseSettings settings)
        {
            var minCount = settings.TableContext.MinTableCategoryCount;
            var maxCount = settings.TableContext.MaxTableCategoryCount;
            var count    = RandomUtility.Next(minCount, maxCount);
            var tableCategoryCollection = tableContext.GetService(typeof(ITableCategoryCollection)) as ITableCategoryCollection;

            while (await tableCategoryCollection.GetCountAsync() < count)
            {
                await tableContext.AddRandomCategoryAsync(authentication);
            }
        }
예제 #8
0
 public static async Task AddRandomItemsAsync(this ITableContext tableContext, Authentication authentication, DataBaseSettings settings)
 {
     await AddRandomCategoriesAsync(tableContext, authentication, settings);
     await AddRandomTablesAsync(tableContext, authentication, settings);
     await AddRandomChildTablesAsync(tableContext, authentication, settings);
     await AddRandomDerivedTablesAsync(tableContext, authentication, settings);
 }
예제 #9
0
        public static async Task <ITable> AddRandomChildTableAsync(this ITableContext tableContext, Authentication authentication, DataBaseSettings settings)
        {
            var tableCollection = tableContext.GetService(typeof(ITableCollection)) as ITableCollection;
            var table           = await tableCollection.GetRandomTableAsync(item => item.TemplatedParent == null && item.Parent == null);

            return(await table.AddRandomChildTableAsync(authentication, settings));
        }
예제 #10
0
        public static async Task AddRandomChildTablesAsync(this ITableContext tableContext, Authentication authentication, DataBaseSettings settings)
        {
            var minCount = settings.TableContext.MinChildTableCount;
            var maxCount = settings.TableContext.MaxChildTableCount;
            var count    = RandomUtility.Next(minCount, maxCount);

            while (await GetChildTableCountAsync() < count)
            {
                await AddRandomChildTableAsync(tableContext, authentication, settings);
            }

            Task <int> GetChildTableCountAsync()
            {
                var tableCollection = tableContext.GetService(typeof(ITableCollection)) as ITableCollection;

                return(tableCollection.Dispatcher.InvokeAsync(() =>
                {
                    return tableCollection.Where(item => item.Parent != null && item.TemplatedParent == null).Count();
                }));
            }
        }
예제 #11
0
        public static async Task <ITable> AddRandomTableAsync(this ITableContext tableContext, Authentication authentication, DataBaseSettings settings)
        {
            var tableCategoryCollection = tableContext.GetService(typeof(ITableCategoryCollection)) as ITableCategoryCollection;
            var category = await tableCategoryCollection.GetRandomTableCategoryAsync();

            return(await AddRandomTableAsync(category, authentication, settings));
        }