private void InsertSecurityStaticeDataIfNotExists(ISecurityStaticDataModel securityStaticDataModel)
 {
     _logger.Error($"HistoricDataGrabTask: Inserting static data if not exists for symbol: {securityStaticDataModel.Symbol}");
     if (!_persistenceManager.DoesSecurityStaticDataExist(securityStaticDataModel))
     {
         _persistenceManager.InsertSecurityStatic(securityStaticDataModel);
     }
 }
 private void InsertSecurityStaticeDataIfNotExists(ISecurityStaticDataModel securityStaticDataModel)
 {
     try
     {
         _logger.Information($"FileBasedDataGrabTask: Inserting static data if not exists for symbol: {securityStaticDataModel.Symbol}");
         if (!_persistenceManager.DoesSecurityStaticDataExist(securityStaticDataModel))
         {
             _persistenceManager.InsertSecurityStatic(securityStaticDataModel);
         }
     }
     catch(Exception exception)
     {
         _logger.Error($"FileBasedDataGrabTask: Error processing static data for symbol: {securityStaticDataModel.Symbol}");
         _logger.Error(exception.ToString());
     }
 }
        public void InsertSecurityStatic(ISecurityStaticDataModel securityStaticData)
        {
            _logger.Information($"PersistenceManager: Inserting security static data: {securityStaticData.Symbol}");

            int?exchangeId = GetExchangeIdByName(securityStaticData.ExchangeData.ExchangeName);

            if (!exchangeId.HasValue)
            {
                throw new ArgumentException($"Attempting to insert static data {securityStaticData.ShortName} " +
                                            $"for exchange {securityStaticData.ExchangeData.ExchangeName} which doesn't exist.");
            }

            string commandString = "INSERT INTO SecurityDetails(Name, Symbol, ExchangeId) Values(@Name, @Symbol, @ExchangeId);";
            var    parameters    = new Dictionary <string, object>
            {
                { "@Name", securityStaticData.ShortName },
                { "@Symbol", securityStaticData.Symbol },
                { "@ExchangeId", exchangeId.Value }
            };

            ExecuteNoReadQuery(commandString, 1, parameters);
        }
        public bool DoesSecurityStaticDataExist(ISecurityStaticDataModel securityStaticData)
        {
            _logger.Information($"PersistenceManager: Checking for the existence of security data: {securityStaticData.Symbol}");

            string commandString = "SELECT * FROM SecurityDetails WHERE Symbol = @Symbol;";

            using (IMySqlCommandWrapper commandWrapper = _commandWrapperFactory.GetCommandWrapper(commandString, _connectionWrapper))
            {
                commandWrapper.AddParameter("@Symbol", securityStaticData.Symbol);

                lock (_lockObject)
                {
                    using (IMySqlDataReaderWrapper dataReader = commandWrapper.ExecuteReader())
                    {
                        string existenceLog = dataReader.HasRows ? "exists" : "does not exist";
                        _logger.Information($"PersistenceManager: Security static data {securityStaticData.Symbol} {existenceLog}");

                        return(dataReader.HasRows);
                    }
                }
            }
        }