Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions content/docs/data-modeling/drivers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,11 @@ Checks that need no connection can still run in the constructor, which fails
even earlier — that is where `MongoDBDriver` puts its
[tenancy guard](#multi-tenancy-not-supported).

A driver need not front a database at all: a plugin can publish one over a REST API or
any other system, and an `external` object bound to it is served from there on every
read. The recipe, the rules such a driver keeps and a test template are in
[Virtual objects](/docs/data-modeling/virtual-objects).

## PostgreSQL (via `@objectstack/driver-sql`)

```bash
Expand Down
6 changes: 5 additions & 1 deletion content/docs/data-modeling/external-datasources.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ auto-connected, validated at boot, and queryable — with no application code.**
This guide is about reading/writing the *live* remote tables (federation). To
*copy* rows into ObjectStack-owned tables instead, see seed data / data sync. For
the plain multi-datasource routing of **managed** databases ObjectStack owns, see
[Database Drivers](/docs/data-modeling/drivers).
[Database Drivers](/docs/data-modeling/drivers). When the remote is not a database a
built-in driver reaches — a REST API, a planning engine, a device gateway — serve the
object from your own plugin driver instead: [Virtual objects](/docs/data-modeling/virtual-objects).
</Callout>

## 1. Declare the datasource
Expand Down Expand Up @@ -305,6 +307,8 @@ default allows all connects (subject to the gating above).
- [Database Drivers](/docs/data-modeling/drivers) — managed multi-datasource routing,
[read-only via database privileges](/docs/data-modeling/drivers#read-only-grant-it-at-the-database-not-in-metadata),
and [why the platform does not route read replicas](/docs/data-modeling/drivers#read-replicas-the-platform-does-not-route).
- [Virtual objects](/docs/data-modeling/virtual-objects) — the same binding served by
a plugin driver you write, for a remote that is not a database.
- [Datasource reference](/docs/references/data/datasource) — every `defineDatasource` field.
- The `examples/app-showcase` `showcase_external` datasource — a runnable end-to-end demo.
- ADR-0015 (federation spec) and ADR-0062 (external-datasource runtime).
1 change: 1 addition & 0 deletions content/docs/data-modeling/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ That one definition is enough to get a persisted table, CRUD + query endpoints,
<Card href="/docs/data-modeling/import-mappings" title="Import Mappings" description="Named column-to-field projections applied by the import endpoint" />
<Card href="/docs/data-modeling/external-datasources" title="External Datasources" description="Federate external databases into the model" />
<Card href="/docs/data-modeling/drivers" title="Database Drivers" description="Configure SQL, MongoDB, in-memory, and WASM drivers" />
<Card href="/docs/data-modeling/virtual-objects" title="Virtual Objects" description="Serve an object's rows from your own server through a plugin driver" />
<Card href="/docs/data-modeling/analytics" title="Analytics Datasets" description="Model datasets for dashboards and reports" />
</Cards>

Expand Down
1 change: 1 addition & 0 deletions content/docs/data-modeling/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"import-mappings",
"external-datasources",
"drivers",
"virtual-objects",
"analytics"
]
}
Loading
Loading