node_pg

Types

Opaque type wrapping a node-postgres Client instance Provides type safety and encapsulates internal implementation

pub opaque type Client

PostgreSQL connection configuration All fields are optional; node-postgres uses environment variables as defaults

pub type Config {
  Config(
    user: option.Option(String),
    password: option.Option(String),
    host: option.Option(String),
    port: option.Option(Int),
    database: option.Option(String),
    connection_string: option.Option(String),
    ssl: option.Option(dynamic.Dynamic),
    types: option.Option(dynamic.Dynamic),
    statement_timeout: option.Option(Int),
    query_timeout: option.Option(Int),
    lock_timeout: option.Option(Int),
    application_name: option.Option(String),
    connection_timeout_millis: option.Option(Int),
    keep_alive_initial_delay_millis: option.Option(Int),
    idle_in_transaction_session_timeout: option.Option(Int),
    client_encoding: option.Option(String),
    fallback_application_name: option.Option(String),
    options: option.Option(String),
  )
}

Constructors

Structured database error information Maps PostgreSQL and node-postgres errors to Gleam Result types

pub type DatabaseError {
  DatabaseError(
    message: String,
    code: option.Option(String),
    detail: option.Option(String),
    hint: option.Option(String),
  )
}

Constructors

Field metadata from query results

pub type FieldInfo {
  FieldInfo(
    name: String,
    table_id: Int,
    column_id: Int,
    data_type_id: Int,
  )
}

Constructors

  • FieldInfo(
      name: String,
      table_id: Int,
      column_id: Int,
      data_type_id: Int,
    )

SQL query execution result Rows are provided as Dynamic type for user decoding with gleam/dynamic

pub type QueryResult {
  QueryResult(
    rows: List(dynamic.Dynamic),
    row_count: option.Option(Int),
    command: String,
    fields: option.Option(List(FieldInfo)),
  )
}

Constructors

Values

pub fn connect(
  client: Client,
) -> promise.Promise(Result(Nil, DatabaseError))

Establish a connection to the PostgreSQL database Returns a Promise that resolves to Result(Nil, DatabaseError)

pub fn connection_string_config(
  connection_string: String,
) -> Config

Create a PostgreSQL configuration from a connection string Connection string format: postgresql://[user[:password]@][host][:port][/database][?options]

pub fn create_config(
  user: option.Option(String),
  password: option.Option(String),
  host: option.Option(String),
  port: option.Option(Int),
  database: option.Option(String),
) -> Config

Create a new PostgreSQL configuration from basic connection parameters All parameters are optional; unspecified fields will be set to None node-postgres will use environment variables as defaults for None values

pub fn empty_config() -> Config

Create an empty PostgreSQL configuration All fields are set to None; node-postgres will use environment variables as defaults This is useful when you want to rely entirely on environment configuration

pub fn end(
  client: Client,
) -> promise.Promise(Result(Nil, DatabaseError))

Close the database connection Returns a Promise that resolves to Result(Nil, DatabaseError)

pub fn main() -> Nil
pub fn new_client(config: Config) -> Client

Create a new PostgreSQL client instance from configuration The client is not connected; call connect() to establish connection

pub fn query(
  client: Client,
  sql: String,
  parameters: List(dynamic.Dynamic),
) -> promise.Promise(Result(QueryResult, DatabaseError))

Execute a SQL query with optional parameters Uses parameterized queries to prevent SQL injection Parameters should use $1, $2, etc. placeholders in the SQL string

Search Document