예제 #1
0
            public void TestMethod_In2()
            {
                var str      = "2, 6, 7";
                var expected = "A IN (2,6,7)";
                var actual   = DbHelper.GetWhereString(SqlFilter.In("A", 2, 6, 7)); //   Array.ForEach(array, i => )

                Assert.AreEqual(expected, actual);
            }
예제 #2
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    var apiClient = new TvYandexApiClient();
                    var schedule  = await apiClient.GetSchedule(DateTime.UtcNow);



                    var idApiList = new List <int>();
                    foreach (var item in schedule.schedule.schedules)
                    {
                        idApiList.Add(item.channel.id);
                    }

                    var dbItem = ChannelDataContext.Instance
                                 .GetList(100,
                                          SqlFilter.In("IdFromApi", idApiList))
                                 .ToDictionary(x => x.IdFromApi, x => x.Id);

                    foreach (var channel in schedule.schedule.schedules)
                    {
                        try
                        {
                            if (dbItem.ContainsKey(channel.channel.id))
                            {
                                ChannelDataContext.Instance.Update(new Channel(), x =>
                                {
                                    int val;
                                    dbItem.TryGetValue(channel.channel.id, out val);
                                    x.Id          = val;
                                    x.Name        = channel.channel.familyTitle;
                                    x.Description = channel.channel.title;
                                    x.UpdatedUtc  = DateTime.UtcNow;
                                    x.IdFromApi   = channel.channel.id;
                                });
                            }

                            else
                            {
                                ChannelDataContext.Instance.Create(new Channel(), x =>
                                {
                                    x.Name        = channel.channel.familyTitle;
                                    x.Description = channel.channel.title;

                                    x.UpdatedUtc = DateTime.UtcNow;
                                    x.IdFromApi  = channel.channel.id;
                                });
                            }
                        }
                        catch (Exception ex)
                        {
                            LogHelper.LogError(ex);
                        }
                    }


                    await Task.Delay(TimeSpan.FromMinutes(3), stoppingToken).ConfigureAwait(false);
                }

                catch (OperationCanceledException ex)
                {
                    LogHelper.LogInfo(ex);
                }

                catch (Exception ex)
                {
                    LogHelper.LogError(ex);
                }
            }
        }