based_pg

Package Version Hex Docs

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
Search Document