ducky/connection
Database connection management.
Types
An opaque connection to a DuckDB database.
pub opaque type Connection
Values
pub fn close(connection: Connection) -> Result(Nil, error.Error)
Closes a database connection.
Examples
let assert Ok(conn) = connect(":memory:")
let assert Ok(_) = close(conn)
Errors
Returns an error if the connection cannot be closed.
pub fn connect(path: String) -> Result(Connection, error.Error)
Opens a connection to a DuckDB database.
Must call close() when done. Use with_connection() instead
for automatic cleanup.
connect(":memory:")
// => Ok(Connection(...))
connect("data.duckdb")
// => Ok(Connection(...))
pub fn native(
connection: Connection,
) -> @internal NativeConnection
Returns the native connection handle for FFI calls.
This is an internal function for use by other modules in the ducky package.
pub fn transaction(
conn: Connection,
callback: fn(Connection) -> Result(a, error.Error),
) -> Result(a, error.Error)
Executes operations within a transaction.
Commits on success, rolls back on error.
transaction(conn, fn(conn) {
use _ <- result.try(query.query(conn, "UPDATE accounts ..."))
query.query(conn, "SELECT * FROM accounts")
})
pub fn with_connection(
path: String,
callback: fn(Connection) -> Result(a, error.Error),
) -> Result(a, error.Error)
Executes operations with automatic connection cleanup.
Connection closes automatically on success or error.
use conn <- with_connection(":memory:")
query.query(conn, "SELECT 42")