private static void InputValidation(string databaseName, List <T> items, IDbInsertable <T> inserter)
        {
            if (string.IsNullOrEmpty(databaseName))
            {
                throw new ArgumentException($"{nameof(databaseName)} can't be equal to null or empty!");
            }

            if (items == null)
            {
                throw new ArgumentNullException($"{nameof(items)} can't be equal to null!");
            }

            if (inserter == null)
            {
                throw new ArgumentNullException($"{nameof(inserter)} can't be equal to null!");
            }
        }
        private static void AddToDatabaseInner(string databaseName, List <T> items, IDbInsertable <T> inserter)
        {
            string connectionString = ConfigurationManager.ConnectionStrings[$"{databaseName}"].ConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                using (SqlTransaction transaction = connection.BeginTransaction())
                {
                    inserter.Insert(connection, transaction, items);
                    transaction.Commit();
                }
                connection.Close();
            }

            System.Console.WriteLine("INFO: {0} trades processed", items.Count);
        }
 public static void AddToDatabase(string databaseName, List <T> items, IDbInsertable <T> inserter)
 {
     InputValidation(databaseName, items, inserter);
     AddToDatabaseInner(databaseName, items, inserter);
 }