database

This is the main entry point for interacting with pgo dbs. It does things like selecting all rows, single records, inserting, updating, and deleting.

Functions

pub fn all(q: Query(a), db: Connection) -> Result(
  List(a),
  QueryError,
)

Select all rows from a table.

Examples

schema
|> from()
|> select(["id", "name"])
|> database.all(db)

schema
|> from()
|> select(["*"])
|> database.all(db)
pub fn delete(query: Query(a), db: Connection) -> Result(
  a,
  QueryError,
)

Delete a record from a table. Right now it will only return the first deleted record but could be updated to return more than one.

Examples

schema()
|> from()
|> where([#("id = $1", [pgo.int(id)])])
|> database.delete(db)
pub fn insert(schema: Schema(a), data: List(Value), db: Connection) -> Result(
  a,
  QueryError,
)

Insert a record into a table.

Examples

database.insert(
  schema(),
  [pgo.text(note.title), pgo.text(note.content)],
  db,
)
pub fn one(q: Query(a), db: Connection) -> Option(a)

Select a single record from a table. If there’s more than one row returned this will only return the first.

Examples

schema()
|> from()
|> select(["*"])
|> where([#("id = $1", [pgo.int(id)])])
|> database.one(db)

schema()
|> from()
|> select(["id"])
|> where([#("title ilike '%$1%'", [pgo.text(title)])])
|> database.one(db)
pub fn update(query: Query(a), data: List(#(String, Value)), db: Connection) -> Result(
  a,
  QueryError,
)

Update one or more records in a table. Right now it will only return the first updated record but could be updated to return more than one.

Examples

schema()
|> from()
|> where([#("id = $1", [pgo.int(id)])])
|> database.update(
  [
    #("title", pgo.text(note.title)),
    #("content", pgo.text(note.content)),
  ],
  db,
)
Search Document