based_pg
A PostgreSQL adapter for based.
gleam add based_pg
import based
import based/pg
import based/sql
import gleam/dynamic/decode
import pg_value
pub fn main() {
let database =
pg.config
|> pg.database("my_database")
|> pg.username("postgres")
|> pg.password("postgres")
|> pg.new
let assert Ok(_) = pg.start(database)
let db = pg.db(database)
let users = sql.table("users")
let decoder = {
use name <- decode.field(0, decode.string)
use email <- decode.field(1, decode.string)
decode.success(#(name, email))
}
let assert Ok(rows) =
sql.from(users)
|> sql.select([sql.column("name"), sql.column("email")])
|> sql.where([sql.column("id") |> sql.eq(pg_value.int(1), of: sql.val)])
|> sql.to_query(db.sql)
|> based.all(db, decoder)
}
Further documentation can be found at https://hexdocs.pm/based_pg.
Development
docker-compose up # Starts postgres container. Required for tests
gleam test # Run the tests
gleam shell # Run an Erlang shell