///<inheritdoc/> public ConnectionInfo GetConnectionInfo() { var connectionStringBuilder = new SnowflakeDbConnectionStringBuilder(); connectionStringBuilder.ConnectionString = _connectionString; //extract the server information connectionStringBuilder.TryGetValue("host", out object dataSource); //extract the database name connectionStringBuilder.TryGetValue("db", out object database); return(new ConnectionInfo { DataSource = dataSource?.ToString(), Database = database?.ToString() }); }
///<inheritdoc/> public IDbConnection CreateConnection() { var connection = new SnowflakeDbConnection(); connection.ConnectionString = _connectionString; //NOTE: replace original database name with quoted name for case-sensitivity //by default snowflake converts all object identifies into upper case unless it is enclosed in double quote //do not rebuild the connection string because it will add single quote to the value //https://docs.snowflake.com/en/sql-reference/identifiers-syntax.html var connectionStringBuilder = new SnowflakeDbConnectionStringBuilder(); connectionStringBuilder.ConnectionString = _connectionString; connectionStringBuilder.TryGetValue("db", out object result); //db name is empty when checking if the database exists if (null != result) { var databaseName = result.ToString(); if (!databaseName.ToString().IsDoubleQuoted()) { var modifiedConnectionString = _connectionString.Replace(databaseName, databaseName.DoubleQuote()); connection.ConnectionString = modifiedConnectionString; } } return(connection); }
public override void DropDatabase(string connectionString) { //extract the test database name from connection string var connectionStringBuilder = new SnowflakeDbConnectionStringBuilder(); connectionStringBuilder.ConnectionString = connectionString; connectionStringBuilder.TryGetValue("db", out object databaseName); var sqlStatement = $"DROP DATABASE {databaseName.ToString().DoubleQuote()};"; //prepare a connection to snowflake without any targetdb or schema, we need to remove these keys else it throws an error that db doesn't exists var masterConnectionStringBuilder = new SnowflakeDbConnectionStringBuilder(); masterConnectionStringBuilder.ConnectionString = connectionString; masterConnectionStringBuilder.Remove("db"); masterConnectionStringBuilder.Remove("schema"); base.ExecuteNonQuery(masterConnectionStringBuilder.ConnectionString, sqlStatement); }
public override bool CheckIfDbExist(string connectionString) { //extract the test database name from connection string var connectionStringBuilder = new SnowflakeDbConnectionStringBuilder(); connectionStringBuilder.ConnectionString = connectionString; connectionStringBuilder.TryGetValue("db", out object databaseName); //prepare the sql statement var tokens = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>(RESERVED_TOKENS.YUNIQL_DB_NAME, databaseName.ToString()), new KeyValuePair <string, string>(RESERVED_TOKENS.YUNIQL_SCHEMA_NAME, base.SchemaName), }; var sqlStatement = _tokenReplacementService.Replace(tokens, _dataService.GetSqlForCheckIfDatabaseExists()); //prepare a connection to snowflake without any targetdb or schema, we need to remove these keys else it throws an error that db doesn't exists var masterConnectionStringBuilder = new SnowflakeDbConnectionStringBuilder(); masterConnectionStringBuilder.ConnectionString = connectionString; masterConnectionStringBuilder.Remove("db"); masterConnectionStringBuilder.Remove("schema"); return(QuerySingleRow(masterConnectionStringBuilder.ConnectionString, sqlStatement)); }