AbstractAbstractGetReturns the cache TTL (in seconds) configured on the external data source — the basis for
time-bounded caching of external reads. Unlike MJ-DB entities, external reads can't be
event-invalidated (their data changes on the remote system), so callers cache them with a
TTL instead. Implementations resolve the ExternalDataSource and return its
DefaultCacheTTLSeconds (falling back to a sane default when unset). A return value of 0
signals "do not cache this source." Resolved through the engine's already-cached data
source, so this is cheap to call on the read hot path.
OptionalcontextUser: UserInfoOptionalprovider: IMetadataProviderAbstractIntrospectIntrospect the schema of an external data source (its tables/views/collections and their
columns), delegating to the resolved driver's IntrospectSchema. Used by CodeGen to
generate/sync EntityField metadata for external-backed entities — the remote analogue of
reading INFORMATION_SCHEMA for an MJ-DB entity. schemaName narrows to a single
schema/namespace when supplied. Reached via MJGlobal.ClassFactory so build-time consumers
stay free of a hard dependency on the engine + driver SDKs.
OptionalschemaName: stringOptionalcontextUser: UserInfoOptionalprovider: IMetadataProviderAbstractLoadLoad a single record by primary key for an entity whose EntityInfo.ExternalDataSourceID
is set. Composite-key aware: every field of CompositeKey is matched with a quoted,
parameter-bound predicate at the driver boundary (so mixed-case / reserved-word PK columns
work on case-sensitive external dialects). Returns a RunViewResult whose Results
holds the single matched row (or is empty when not found) — mirroring
RunViewExternal so the provider's Load path stays uniform.
OptionalcontextUser: UserInfoOptionalprovider: IMetadataProviderAbstractRunProxy a native-dialect MJ Query whose ExternalDataSourceID is set.
Takes primitives (not the query entity) so this contract stays in
@memberjunction/core without a circular dependency on core-entities.
sql is the fully-rendered query text (MJ parameter templating already applied).
OptionalcontextUser: UserInfoOptionalprovider: IMetadataProviderAbstractRunProxy a RunView for an entity whose EntityInfo.ExternalDataSourceID is set.
OptionalcontextUser: UserInfoOptionalprovider: IMetadataProvider
Registration base for the External Data Sources read router — the dependency- inversion seam between foundational data providers and the (server-only)
@memberjunction/external-data-sourcesengine.The concrete implementation lives in that engine package and registers itself via
@RegisterClass(ExternalDataSourceReadRouter). Providers such asGenericDatabaseProviderresolve it lazily throughMJGlobal.ClassFactoryonly when an entity/query carries anExternalDataSourceID. This keeps@memberjunction/core(and the providers that depend on it) free of any hard dependency on the EDS engine, its drivers, or the credential subsystem.If an external entity/query is encountered but no concrete router is registered (the EDS package was never loaded), the provider should surface a clear error rather than fall through to MJ-DB SQL generation.