Exemplo n.º 1
0
        // Open -------------------------------------

        /// <summary>
        /// Creates a connector.
        /// </summary>
        /// <param name="scope">The scope to consider.</param>
        /// <param name="depot">The data source depot to consider.</param>
        /// <param name="dataSourceName">The data source name to consider.</param>
        /// <param name="connectorDefinitionUniqueId">The connector definition name to consider.</param>
        /// <param name="log">The log of execution to consider.</param>
        /// <returns>Returns True if the connector has been opened. False otherwise.</returns>
        public static T Open <T>(
            this IBdoScope scope,
            IBdoDatasourceDepot depot,
            string dataSourceName,
            string connectorDefinitionUniqueId,
            IBdoLog log = null)
            where T : class, IBdoConnection
        {
            if (log == null)
            {
                log = new BdoLog();
            }

            if (depot == null)
            {
                depot = scope?.DataStore?.Get <IBdoDatasourceDepot>();
            }

            if (depot == null)
            {
                log.AddError("Data source depot missing");
            }
            else if (!depot.HasItem(dataSourceName))
            {
                log.AddError("Data source '" + dataSourceName + "' missing in depot");
            }
            else
            {
                return(scope.Open <T>(depot.Get(dataSourceName), connectorDefinitionUniqueId, log));
            }

            return(default);
        /// <summary>
        /// Adds the specified source.
        /// </summary>
        /// <param name="depot">The depot to consider.</param>
        /// <param name="datasource">The datasource to consider.</param>
        public static IBdoDatasourceDepot AddDatasource(
            this IBdoDatasourceDepot depot,
            Datasource datasource)
        {
            depot?.Add(datasource);

            return(depot);
        }
        /// <summary>
        /// Adds sources from BindOpen configuration.
        /// </summary>
        /// <param name="depot">The depot to consider.</param>
        /// <param name="options">The host options to consider.</param>
        public static IBdoDatasourceDepot AddFromConfiguration(this IBdoDatasourceDepot depot, IBdoHostOptions options)
        {
            if (options?.AppSettings?.AppConfiguration?.Datasources != null)
            {
                foreach (var dataSource in options?.AppSettings?.AppConfiguration?.Datasources)
                {
                    depot?.Add(dataSource);
                }
            }

            return(depot);
        }
        /// <summary>
        /// Creates the specified PostgreSql data source.
        /// </summary>
        /// <param name="datasourceDepot"></param>
        /// <param name="name"></param>
        /// <param name="connectionString"></param>
        /// <returns></returns>
        public static Datasource CreatePostgreSqlDatasource(
            this IBdoDatasourceDepot datasourceDepot,
            string name,
            string connectionString,
            IBdoLog log = null)
        {
            var datasource = ItemFactory.CreateDatasource(name, DatasourceKind.Database)
                             .WithConfiguration(
                (datasourceDepot?.Scope?.CreateConnectorConfiguration("databases.postgresql$client", log)
                 as BdoConnectorConfiguration)?.WithConnectionString(connectionString));

            return(datasource as Datasource);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Adds sources from host.
        /// </summary>
        /// <param name="depot">The datasource depot to consider.</param>
        /// <param name="config">The configuration to consider.</param>
        /// <param name="keyName">The key name to consider.</param>
        public static IBdoDatasourceDepot AddFromNetCoreConfiguration(this IBdoDatasourceDepot depot, IConfiguration config, string keyName = "connectionStrings")
        {
            if (depot != null && config != null)
            {
                var sections = config.GetSection(keyName).GetChildren();
                foreach (var section in sections)
                {
                    depot.Add(
                        ItemFactory.CreateDatasource(section.Key, DatasourceKind.Database)
                        .WithConfiguration(
                            new BdoConnectorConfiguration().WithConnectionString(section.Value) as BdoConnectorConfiguration)
                        );
                }
            }
            ;

            return(depot);
        }