Files
lyng/lyngio/stdlib/lyng/io/db_jdbc.lyng
T

58 lines
1.7 KiB
Plaintext

package lyng.io.db.jdbc
import lyng.io.db
/*
Generic JDBC provider for `lyng.io.db` on the JVM target.
Importing this module registers:
- `jdbc:` for raw JDBC URLs such as `jdbc:h2:mem:test`
- `h2:` as a shorthand alias for `jdbc:h2:...`
- `postgres:` / `postgresql:` as shorthand aliases for `jdbc:postgresql:...`
The JVM artifact bundles and explicitly loads the SQLite, H2, and
PostgreSQL JDBC drivers, so `openJdbc(...)`, `openH2(...)`, and
`openPostgres(...)` work under the standard `jlyng` launcher without extra
classpath setup.
Supported `openDatabase(..., extraParams)` keys for JDBC:
- `driverClass: String`
- `user: String`
- `password: String`
- `properties: Map<String, Object?>`
The optional `properties` map is converted to JDBC connection properties by
stringifying each non-null value.
*/
extern fun openJdbc(
connectionUrl: String,
user: String? = null,
password: String? = null,
driverClass: String? = null,
properties: Map<String, Object?>? = null
): Database
/*
Open an H2 database. `connectionUrl` may be a full JDBC URL such as
`jdbc:h2:mem:test`, or the shorter H2-specific tail such as
`mem:test;DB_CLOSE_DELAY=-1`.
*/
extern fun openH2(
connectionUrl: String,
user: String? = null,
password: String? = null,
properties: Map<String, Object?>? = null
): Database
/*
Open a PostgreSQL database. `connectionUrl` may be a full JDBC URL such as
`jdbc:postgresql://localhost/app`, or the shorter provider tail such as
`//localhost/app`.
*/
extern fun openPostgres(
connectionUrl: String,
user: String? = null,
password: String? = null,
properties: Map<String, Object?>? = null
): Database