Portal Community

IDatasourceRegistry

public interface IDatasourceRegistry
{
    DatasourceDefinition GetDatasource(string datasourceId);
    bool TryGetDatasource(string datasourceId, out DatasourceDefinition definition);
    IReadOnlyCollection<string> RegisteredDatasourceIds { get; }
}

public record DatasourceDefinition
{
    public string DatasourceId { get; init; } = default!;
    public DatasourceType Type { get; init; }              // Sql | Rest | DataOcean
    public string DisplayName { get; init; } = default!;
    public int CredentialId { get; init; }                 // connection string / API key via ICredentialResolver
    public string? Host { get; init; }                     // for SQL: server host
    public string? Database { get; init; }                 // for SQL: database name
    public string? BaseUrl { get; init; }                  // for REST: base URL
    public int? Port { get; init; }
    public int ConnectionPoolSize { get; init; } = 10;
}

Registering a Datasource

// Register via API or DI:
services.AddDatasource(new DatasourceDefinition
{
    DatasourceId = "payroll-db",
    Type = DatasourceType.Sql,
    DisplayName = "Payroll PostgreSQL Database",
    CredentialId = 31,   // connection string stored via ICredentialResolver
    Host = "db.acme.internal",
    Database = "payroll",
    Port = 5432,
    ConnectionPoolSize = 20
});

services.AddDatasource(new DatasourceDefinition
{
    DatasourceId = "erp-api",
    Type = DatasourceType.Rest,
    DisplayName = "ERP REST API",
    CredentialId = 45,   // API key via ICredentialResolver
    BaseUrl = "https://erp.acme.com/api/v2"
});

Connection Pooling

The IDatasourceConnectionFactory maintains a connection pool per datasourceId. Connections are reused across node executions. The pool size is configurable per datasource definition via ConnectionPoolSize.

Node designer dropdown: The Flow Studio node inspector shows a dropdown of all registered datasource IDs when configuring a SQL or REST datasource node. The dropdown is populated from IDatasourceRegistry.RegisteredDatasourceIds.