public async Task DoWork(APipeLineContext context)
        {
            var bContext     = ((BonusContext)context);
            var noPriceItems = bContext.Items.Where(x => x.ForPriceInCents == 0 || x.FromPriceInCents == 0).ToList();

            logger.LogInformation($"Looking up {noPriceItems.Count} items");
            await GetProductPriceData(noPriceItems);
        }
        public async Task DoWork(APipeLineContext context)
        {
            var bContext = ((BonusContext)context);

            logger.LogInformation($"Saving {bContext.Items.Count} items");
            using (var connection = new SqlConnection(this.ConnectionString))
            {
                await connection.OpenAsync();

                ///                                        1     2     3   4        5
                var insertPart = "insert into BonusProductsEvents(Year, Week, ID, Title, StartDate, EndDate, FromPriceInCents, ForPriceInCents, DiscountText, UnitSize, Category, Link, Brand, ActiveAtNumberOfProducts, Store) VALUES ";
                var valuePart  = "({0}, {1}, {2}, '{3}', '{4}', '{5}', {6}, {7}, '{8}', '{9}', '{10}', '{11}', '{12}', {13}, '{14}')";
                var index      = 0;
                var buffer     = new List <string>();
                while (index < bContext.Items.Count)
                {
                    var item = bContext.Items[index];
                    buffer.Add(string.Format(valuePart,
                                             item.Year,
                                             item.Week,
                                             item.Id,
                                             CleanString(item.Title),
                                             FormatDate(item.StartDate),
                                             FormatDate(item.EndDate),
                                             item.FromPriceInCents,
                                             item.ForPriceInCents,
                                             CleanString(item.DiscountText),
                                             CleanString(item.UnitSize),
                                             CleanString(item.Category),
                                             CleanString(item.Link),
                                             CleanString(item.Brand),
                                             item.ActiveAtNumberOfProducts,
                                             CleanString(item.Store)));
                    if (index % 1000 == 999)
                    {
                        await FlushData(connection, insertPart, buffer);
                    }
                    index++;
                }
                await FlushData(connection, insertPart, buffer);

                await connection.CloseAsync();
            }
        }
示例#3
0
 public Task DoWork(APipeLineContext context)
 {
     Console.WriteLine("Beep");
     return(Task.CompletedTask);
 }
 public async Task DoWork(APipeLineContext context)
 {
     ((BonusContext)context).Items = await Get();
 }