// 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); }
/// <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); }