api

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package api wraps the Hadron GraphQL endpoint: a genqlient client for typed operations, a raw escape hatch for `hadron api`, and the mapping from transport/GraphQL errors to exit codes.

Index

Constants

View Source
const NodeBatchCap = 200

NodeBatchCap mirrors hadron-server's BATCH_READ_MAX_NODES (cor:api:040): a single nodeBatch call accepts at most 200 ids and fails loud above that, so bulk reads fan out in fixed-size chunks. The server also enforces a ~1 MB response cap that can return a partial page (truncated=true) with the spillover ids in `omitted`; CollectNodeBatch re-requests those.

Variables

This section is empty.

Functions

func CollectNodeBatch added in v0.2.0

CollectNodeBatch fetches full nodes for ids in cap-sized chunks, re-queuing the spillover the server drops under its response-size cap. fetch is injected rather than calling gen.NodeBatch directly so the chunking/truncation loop is unit-testable without a server and so each caller controls the field projection. Returns the nodes (input order is not preserved across chunks), the union of ids the server reported unavailable, and the first error.

Shared by the whole-corpus fan-outs (`memory export`, `spec get --prefix`).

func DocumentFromBatchNode added in v0.3.0

func DocumentFromBatchNode(n *batchNode) *nodedoc.Document

DocumentFromBatchNode maps a bulk-read node into the neutral nodedoc.Document the markdown/JSON codecs consume. It is the single gen→Document mapping shared by `memory export` and `node export`. Type "" carries the server default (info), so it never serializes and a re-import defaults correctly. The projection only carries the memory id, not the URN, so callers that emit a standalone file resolve and set Document.MemoryURN themselves.

func Endpoint

func Endpoint(serverURL string) string

Endpoint joins the server base URL with the GraphQL path.

func MapError

func MapError(err error) error

MapError converts transport and GraphQL errors into CodedErrors so the root command can derive the documented exit code. Codes come from hadron-server's Apollo resolvers (extensions.code).

func NewClient

func NewClient(serverURL, token string, httpClient *http.Client) (graphql.Client, error)

NewClient returns a genqlient client for the given server, authenticating with token (may be empty for anonymous calls).

Types

type RawResult

type RawResult struct {
	Body   json.RawMessage
	Errors []rawError
}

RawResult is the verbatim GraphQL response envelope.

func RawGraphQL

func RawGraphQL(ctx context.Context, serverURL, token, query string, variables map[string]any, httpClient *http.Client) (*RawResult, error)

RawGraphQL posts an arbitrary query/mutation to the server and returns the raw response body. Used by `hadron api`. The returned error carries the mapped exit code when the response contains GraphQL errors.

func (*RawResult) Err

func (r *RawResult) Err() error

Err returns a CodedError summarizing the response's GraphQL errors, or nil when the response is error-free.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL