# `QuackDB.DBConnection`
[🔗](https://github.com/elixir-vibe/quackdb/blob/main/lib/quack_db/db_connection.ex#L1)

`DBConnection` implementation for the remote DuckDB Quack protocol.

This module owns connection lifecycle, request execution, cursor-based
streaming, transaction callbacks, and result normalization. It intentionally
keeps HTTP transport and binary protocol encoding delegated to lower-level
modules so the protocol codec can stay independent from DBConnection.

# `state`

```elixir
@type state() :: %QuackDB.DBConnection{
  client_version: String.t(),
  connection_id: String.t() | nil,
  cursors: map(),
  server: QuackDB.Protocol.Message.ConnectionResponse.t() | nil,
  status: DBConnection.status(),
  token: String.t(),
  transport: function(),
  uri: URI.t()
}
```

# `child_spec`

```elixir
@spec child_spec(Keyword.t()) :: Supervisor.child_spec()
```

# `start_link`

```elixir
@spec start_link(Keyword.t()) :: GenServer.on_start()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
