defmodule QuackDB.Cursor do @moduledoc """ Cursor metadata used by `DBConnection` streaming. A cursor tracks the remote Quack result UUID plus column/type metadata needed to fetch and materialize subsequent result chunks. """ defstruct [:ref, :result_uuid, :columns, :result_types, :connection_id, :statement] end defimpl Inspect, for: QuackDB.Cursor do import Inspect.Algebra alias QuackDB.Inspect, as: QuackInspect def inspect(cursor, opts) do fields = [ result_uuid: cursor.result_uuid, columns: cursor.columns, connection_id: QuackInspect.short_id(cursor.connection_id), statement: QuackInspect.truncate(cursor.statement) ] concat(QuackInspect.container("QuackDB.Cursor", fields, opts)) end end