gabsurd/client
Database client for gabsurd — wraps pog connection and provides helpers for executing parrot-generated queries against PostgreSQL.
Types
A database connection handle.
pub type Db {
Db(pid: process.Pid, connection: pog.Connection)
}
Constructors
-
Db(pid: process.Pid, connection: pog.Connection)
Errors returned by gabsurd operations.
pub type GabsurdError {
QueryError(String)
UnexpectedRowCount(String)
NotFound
ConnectionError(String)
}
Constructors
-
QueryError(String)The database query failed (connection issue, constraint violation, etc.)
-
UnexpectedRowCount(String)A query returned an unexpected number of rows.
-
NotFoundNo row was found for a
:onequery. -
ConnectionError(String)Failed to connect to the database.
Values
pub fn exec(
db: Db,
sql_and_params: #(String, List(dev.Param)),
) -> Result(Nil, GabsurdError)
Execute a :exec query — returns Nil on success.
Void-returning functions are cast to ::text in SQL so pgo can decode them.
pub fn query_many(
db: Db,
sql_params_decoder: #(
String,
List(dev.Param),
decode.Decoder(a),
),
) -> Result(List(a), GabsurdError)
Execute a :many query — returns a list of rows of type a.
pub fn query_one(
db: Db,
sql_params_decoder: #(
String,
List(dev.Param),
decode.Decoder(a),
),
) -> Result(a, GabsurdError)
Execute a :one query — returns a single row of type a, or Error if no row.
pub fn start(
url: String,
) -> Result(actor.Started(Db), actor.StartError)
Start a database connection from a DATABASE_URL string. Uses a unique pool name to avoid collisions when multiple connections are started (e.g., in tests).
pub fn start_with(
host: String,
port: Int,
database: String,
user: String,
password: String,
) -> Result(actor.Started(Db), actor.StartError)
Start a connection from individual parts (useful for testing).