The database port: what a database adapter must provide.
Lived at wagoe.platform.ports.database until BOU-303,
which is where a port cannot live — every module's persistence layer had to
reach into platform's shell to name it, and .wagoe/check-ports.edn carried
the 20 sites that did as its largest burn-down entry.
Unlike the router abstraction ADR-037 removed, this seam is real: four adapters implement it (postgresql, mysql, sqlite, h2), and the differences between them — dialect, boolean representation, JDBC URL shape — are exactly what the methods below name.
For executing queries rather than describing a database, see
wagoe.platform.database.
Protocol defining the common interface for database adapters.
This protocol abstracts database-specific behavior while allowing common database operations to be implemented in a shared core namespace. Each database type (SQLite, PostgreSQL, MySQL, H2) implements this protocol to provide database-specific functionality.
Design Philosophy:
The database port: what a database adapter must provide. Lived at `wagoe.platform.ports.database` until BOU-303, which is where a port cannot live — every module's persistence layer had to reach into platform's shell to name it, and `.wagoe/check-ports.edn` carried the 20 sites that did as its largest burn-down entry. Unlike the router abstraction ADR-037 removed, this seam is real: four adapters implement it (postgresql, mysql, sqlite, h2), and the differences between them — dialect, boolean representation, JDBC URL shape — are exactly what the methods below name. For executing queries rather than describing a database, see `wagoe.platform.database`. Protocol defining the common interface for database adapters. This protocol abstracts database-specific behavior while allowing common database operations to be implemented in a shared core namespace. Each database type (SQLite, PostgreSQL, MySQL, H2) implements this protocol to provide database-specific functionality. Design Philosophy: - Keep protocol narrow - prefer common behavior in core - Only include methods that differ between databases - Database-agnostic operations belong in core namespace - Type conversions use shared utilities where possible
The HTTP server port.
Routing is not a port: modules emit Reitit route data and the platform compiles it (ADR-037). The server is — a Ring handler is handed to whatever implements this protocol.
The HTTP server port. Routing is not a port: modules emit Reitit route data and the platform compiles it (ADR-037). The server is — a Ring handler is handed to whatever implements this protocol.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |