I need to pass some config to ddbc driver. When I use static const all work ok.
static const string PGSQL_UNITTEST_HOST = "localhost";
static const int    PGSQL_UNITTEST_PORT = 5432;
static const string PGSQL_UNITTEST_USER = "postgres";
static const string PGSQL_UNITTEST_PASSWORD = "Infinity8";
static const string PGSQL_UNITTEST_DB = "test2";

But using static const mean that settings will be hardcoded. But I need to read it from config file.

So I need so simply declared it as:

this(parseConfig parseconfig)
{

string PGSQL_UNITTEST_HOST = parseconfig.dbhost;        
int    PGSQL_UNITTEST_PORT = parseconfig.dbport;                
string PGSQL_UNITTEST_USER = parseconfig.dbuser;
string PGSQL_UNITTEST_PASSWORD = parseconfig.dbpass;
string PGSQL_UNITTEST_DB = parseconfig.dbname;
...
}

But when I do it like above code stop compile and I am getting error:

source\app.d(218): Error: function ddbc.drivers.pgsqlddbc.PGSQLDriver.generateUrl (string host, ushort port, string dbname) is not callable using argument types (string, int, string)

I looked at driver source code and have found next code:

    class PGSQLDriver : Driver {
        // helper function
public static string generateUrl(string host, ushort port, string dbname) { return "postgresql://" ~ host ~ ":" ~ to!string(port) ~ "/" ~ dbname;
        }
public static string[string] setUserAndPassword(string username, string password) {
                string[string] params;
                params["user"] = username;
                params["password"] = password;
                params["ssl"] = "true";
                return params;
        }
                
So it's look like that it can accept strings and ints without problem.

And I really can't understand why it's accept only "static const string" constructions...
                

Reply via email to