コード例 #1
0
        public void InsertBetDetails(
            MySqlConnection conn,
            MySqlTransaction sqlTxn,
            InsertBetDetailBatchCriteria criteria)
        {
            if (!criteria.IsValid())
            {
                return;
            }

            foreach (var betDetail in criteria.BetDetailResult.Data.BetDetails)
            {
                var betDetailCriteria = new InsertBetDetailCriteria
                {
                    BetDetail = betDetail
                };

                var cmd = new MySqlCommand(betDetailCriteria.GetSettingKey(), conn)
                {
                    CommandType = CommandType.StoredProcedure,
                    Transaction = sqlTxn
                };

                cmd.Parameters.AddWithValue("BetDetail", JsonConvert.SerializeObject(betDetailCriteria.BetDetail));
                cmd.ExecuteNonQuery();
            }
        }
コード例 #2
0
        public void GetBetDetails()
        {
            var service = new SportsbookService();

            var criteria = new InsertBetDetailBatchCriteria
            {
                BetDetailResult = service.GetBetDetail().GetAwaiter().GetResult()
            };

            var repository = new BetDetailRepository();

            repository.InsertBetDetailBatch(criteria);
        }
コード例 #3
0
        public void InsertBetDetailBatch(InsertBetDetailBatchCriteria criteria)
        {
            using (var conn = new MySqlConnection(connectionString))
            {
                conn.Open();

                using (var sqlTxn = conn.BeginTransaction(IsolationLevel.ReadCommitted))
                {
                    InsertBetDetails(conn, sqlTxn, criteria);

                    if (criteria.BetDetailResult.Data != null)
                    {
                        UpdateBetDetailLastVersion(conn, sqlTxn, new UpdateBetDetailLastVersionCriteria
                        {
                            Version = criteria.BetDetailResult.Data.last_version_key
                        });
                    }

                    sqlTxn.Commit();
                }
            }
        }
コード例 #4
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    var service = new SportsbookService();

                    var criteria = new InsertBetDetailBatchCriteria
                    {
                        BetDetailResult = await service.GetBetDetail()
                    };

                    var repository = new BetDetailRepository();
                    repository.InsertBetDetailBatch(criteria);
                    await Task.Delay(5000, stoppingToken);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex.Message);
                }
            }
        }