Example #1
0
        public async Task LoadPricing()
        {
            var tableName = Constants.PricingTable;

            await CreateTable(tableName);

            CommandLine.InformUser("Loader", "Generating data for " + tableName);
            var rows = Generator.GeneratePricing(Constants.PricingIdsToCreate, Constants.PricingRowsPerId);

            var       count     = 0;
            const int batchSize = BatchAndPoolSize;
            const int total     = Constants.PricingIdsToCreate * Constants.PricingRowsPerId / batchSize;
            var       cursor    = Console.CursorTop;

            foreach (var batch in rows.Batch(batchSize))
            {
                var rowTasks = batch.Select(row => Task.Run(() =>
                {
                    // Get key
                    var key = (string)row["Key"];

                    // Remove from hash for ease
                    row.Remove("Key");

                    // Write the row
                    _dataClient.WriteRowAsync(tableName, key, row.Select(kv => BigChange.CreateCellUpdate(Constants.ColumnFamilyName, kv.Key, kv.Value.ToString()))).Wait();
                })).ToArray();

                // Keep user updated
                Console.CursorTop = cursor;
                CommandLine.InformUser("Loader", String.Format("Writing {0}: {1}%", tableName, count++ *100 / total));

                Task.WhenAll(rowTasks).Wait();      // silly syntax to avoid resharper warning
            }

            // Keep user updated
            Console.CursorTop = cursor;
            CommandLine.InformUser("Loader", String.Format("Wrote {0}: 100%     ", tableName));
        }
Example #2
0
        private IEnumerable <BigChange> ExtractChanges <T>(ReflectionCache reflection, T instance)
        {
            var result = new List <BigChange>();

            reflection.ExtractChanges(instance, (familyName, fieldName, value) => result.Add(BigChange.CreateCellUpdate(familyName, fieldName, value)));
            return(result);
        }