Example #1
0
        /**
         * Create a DSN string from a configuration.
         *
         * @param  array   $config
         * @return string
         */
        protected string getDsn(ApplicationDatabaseConnectionConfig config)
        {
            Dictionary <string, string> arguments = new Dictionary <string, string>();

            arguments["Server"] = this.buildHostString(config, ",");

            if (config.database != null)
            {
                arguments["Database"] = config.database;
            }
            if (config.appname != null)
            {
                arguments["APP"] = config.appname;
            }
            if (config.username != null)
            {
                arguments["User Id"] = config.username;
            }
            if (config.password != null)
            {
                arguments["Password"] = config.password;
            }
            if (config.extra.ContainsKey("readonly") && config.extra["readonly"] is bool && (bool)config.extra["readonly"] == true)
            {
                arguments["ApplicationIntent"] = "ReadOnly";
            }
            return(this.buildConnectString(arguments));
        }
Example #2
0
        /**
         * Parse and prepare the database configuration.
         *
         * @param  array   $config
         * @param  string  $name
         * @return array
         */
        protected ApplicationDatabaseConnectionConfig parseConfig(ApplicationDatabaseConnectionConfig config, string name)
        {
            ApplicationDatabaseConnectionConfig newConfig = config;

            newConfig.prefix = "";
            newConfig.name   = name;
            return(newConfig);
        }
Example #3
0
        /**
         * Create a single database connection instance.
         *
         * @param  array  $config
         * @return \Illuminate\Database\Connection
         */
        protected virtual Connection createSingleConnection(ApplicationDatabaseConnectionConfig config)
        {
            Func <object> pdo = () => {
                return(this.createConnector(config).connect(config));
            };

            return(this.createConnection(config.driver, pdo, config.database, config.prefix, config));
        }
Example #4
0
        /**
         * Establish a PDO connection based on the configuration.
         *
         * @param  array   $config
         * @param  string  $name
         * @return \Illuminate\Database\Connection
         */
        public virtual Connection make(ApplicationDatabaseConnectionConfig config1, string name = null)
        {
            ApplicationDatabaseConnectionConfig config = this.parseConfig(config1, name);

            if (config.read != null)
            {
                return(this.createReadWriteConnection(config));
            }
            return(this.createSingleConnection(config));
        }
Example #5
0
 /**
  * Build a host string from the given configuration.
  *
  * @param  array  $config
  * @param  string  $separator
  * @return string
  */
 protected string buildHostString(ApplicationDatabaseConnectionConfig config, string separator)
 {
     if (config.port != null)
     {
         return(config.host + separator + config.port);
     }
     else
     {
         return(config.host);
     }
 }
Example #6
0
        /**
         * Establish a database connection.
         *
         * @param  array  $config
         * @return \PDO
         */
        public object connect(ApplicationDatabaseConnectionConfig config)
        {
            SqlConnection conn = new SqlConnection(this.getDsn(config));

            try{
                conn.Open();
            }catch (Exception e) {
                Console.WriteLine(e);
                throw e;
            }
            return(conn);
        }
Example #7
0
        /**
         * Get a read / write level configuration.
         *
         * @param  array   $config
         * @param  string  $type
         * @return array
         */
        protected ApplicationDatabaseConnectionMergeableConfig getReadWriteConfig(ApplicationDatabaseConnectionConfig config, string type)
        {
            switch (type.ToLower())
            {
            default:
            case "read":
                return((ApplicationDatabaseConnectionMergeableConfig)config.read);

            case "write":
                return((ApplicationDatabaseConnectionMergeableConfig)config.write);
            }
        }
Example #8
0
 /**
  * Create a connector instance based on the configuration.
  *
  * @param  array  $config
  * @return \Illuminate\Database\Connectors\ConnectorInterface
  *
  * @throws \InvalidArgumentException
  */
 public ConnectorInterface createConnector(ApplicationDatabaseConnectionConfig config)
 {
     if (config.driver == null)
     {
         throw new Exception("A driver must be specified.");
     }
     switch (config.driver)
     {
     case "sqlsrv":
         return(new SqlServerConnector());
     }
     throw new Exception("Unsupported driver [" + config.driver + "]");
 }
Example #9
0
        /**
         * Merge a configuration for a read / write connection.
         *
         * @param  array  $config
         * @param  array  $merge
         * @return array
         */
        protected ApplicationDatabaseConnectionConfig mergeReadWriteConfig(ApplicationDatabaseConnectionConfig config, ApplicationDatabaseConnectionMergeableConfig extendConfig)
        {
            ApplicationDatabaseConnectionConfig newConfig = config;

            if (extendConfig.name != null)
            {
                newConfig.name = extendConfig.name;
            }
            if (extendConfig.appname != null)
            {
                newConfig.appname = extendConfig.appname;
            }
            if (extendConfig.driver != null)
            {
                newConfig.driver = extendConfig.driver;
            }
            if (extendConfig.host != null)
            {
                newConfig.host = extendConfig.host;
            }
            if (extendConfig.port != null)
            {
                newConfig.port = extendConfig.port;
            }
            if (extendConfig.prefix != null)
            {
                newConfig.prefix = extendConfig.prefix;
            }
            if (extendConfig.database != null)
            {
                newConfig.database = extendConfig.database;
            }
            if (extendConfig.username != null)
            {
                newConfig.username = extendConfig.username;
            }
            if (extendConfig.password != null)
            {
                newConfig.password = extendConfig.password;
            }
            newConfig.read  = null;
            newConfig.write = null;
            return(newConfig);
        }
Example #10
0
        /**
         * Get the read configuration for a read / write connection.
         *
         * @param  array  $config
         * @return array
         */
        protected virtual ApplicationDatabaseConnectionConfig getWriteConfig(ApplicationDatabaseConnectionConfig config)
        {
            ApplicationDatabaseConnectionMergeableConfig writeConfig = this.getReadWriteConfig(config, "write");

            return(this.mergeReadWriteConfig(config, writeConfig));
        }
Example #11
0
        /**
         * Create a new PDO instance for reading.
         *
         * @param  array  $config
         * @return \PDO
         */
        protected virtual object createReadPdo(ApplicationDatabaseConnectionConfig config)
        {
            ApplicationDatabaseConnectionConfig readConfig = this.getReadConfig(config);

            return(this.createConnector(readConfig).connect(readConfig));
        }
Example #12
0
        /**
         * Create a single database connection instance.
         *
         * @param  array  $config
         * @return \Illuminate\Database\Connection
         */
        protected virtual Connection createReadWriteConnection(ApplicationDatabaseConnectionConfig config)
        {
            Connection connection = this.createSingleConnection(this.getWriteConfig(config));

            return(connection.setReadPdo(this.createReadPdo(config)));
        }
Example #13
0
 /**
  * Create a new connection instance.
  *
  * @param  string   $driver
  * @param  \PDO|\Closure     $connection
  * @param  string   $database
  * @param  string   $prefix
  * @param  array    $config
  * @return \Illuminate\Database\Connection
  *
  * @throws \InvalidArgumentException
  */
 protected Connection createConnection(string driver, Func <object> connection, string database, string prefix = "", ApplicationDatabaseConnectionConfig config = default(ApplicationDatabaseConnectionConfig))
 {
     switch (driver)
     {
     case "sqlsrv":
         return(new SqlServerConnection(connection, database, prefix, config));
     }
     throw new NotImplementedException("Unsupported driver [" + driver + "]");
 }