# `TdsCdc.Connection`

Behaviour for database connection adapters used by TdsCdc.

This allows TdsCdc to work with different connection backends:

  * `TdsCdc.Connection.Tds` - Direct TDS connection pool (default)
  * `TdsCdc.Connection.Ecto` - Uses an existing Ecto.Repo

## Example with direct TDS connection

    {:ok, pid} = TdsCdc.start_link(
      conn: [hostname: "localhost", username: "sa", password: "pass", database: "mydb"],
      capture_instances: ["dbo_users"]
    )

## Example with Ecto.Repo

    {:ok, pid} = TdsCdc.start_link(
      repo: MyApp.Repo,
      capture_instances: ["dbo_users"]
    )

# `query_result`

```elixir
@type query_result() ::
  {:ok, %{rows: list() | nil, columns: list() | nil}} | {:error, term()}
```

# `query`

```elixir
@callback query(conn :: term(), String.t(), list()) :: query_result()
```

# `start_link`

```elixir
@callback start_link(keyword()) :: GenServer.on_start()
```

# `stop`

```elixir
@callback stop(conn :: term()) :: :ok | {:error, term()}
```

---

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