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(); } }
public void GetBetDetails() { var service = new SportsbookService(); var criteria = new InsertBetDetailBatchCriteria { BetDetailResult = service.GetBetDetail().GetAwaiter().GetResult() }; var repository = new BetDetailRepository(); repository.InsertBetDetailBatch(criteria); }
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(); } } }
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); } } }