sdk

module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: May 13, 2026 License: MIT

README

paper-board/sdk

Shared Go library for paper-board services. SemVer 2.0 disciplined.

Packages

  • migrator/ — golang-migrate wrapper with cobra CLI; per-service advisory lock; embed.FS source. See ADR-0004.
  • log/ — slog-based structured logging; ctx-aware Pkg(ctx) helper auto-injects request_id, trace_id, org_id, user_id.
  • obs/ — OpenTelemetry SDK setup; Phase 1.0 placeholder, Phase 1.5 real OTLP exporter.
  • errors/ — sentinel errors + gRPC code mapping (ToGRPCStatus, FromGRPCStatus).

Usage

// cmd/migrator/main.go (in your service repo, ~30 lines)
package main

import (
    "context"
    "log"
    "os"

    "github.com/paper-board/sdk/migrator"
    "github.com/paper-board/identity/migrations"  // your service's embed
)

func main() {
    cfg := migrator.Config{
        DBURL:          os.Getenv("MIGRATION_DB_URL"),
        Schema:         "identity",
        AdvisoryLockID: 1, // identity=1, billing=2, agents=3, platform=4
        EmbedFS:        migrations.SchemaFS,
        EmbedRoot:      "schema",
    }
    if err := migrator.Run(context.Background(), cfg, os.Args[1:]); err != nil {
        log.Fatal(err)
    }
}

Versioning

SemVer strict:

  • major — breaking API change
  • minor — additive (new function, new field)
  • patch — bug fix, doc fix

Each minor/patch bump triggers Renovate auto-PR in dependent service repos.

Development

go mod tidy
go test -race -count=1 ./...

Integration tests use testcontainers-go for Postgres. Requires Docker.

License

MIT.

Directories

Path Synopsis
Package auth provides per-route HTTP middleware for verifying caller identity against the paper-board identity gRPC AuthService.
Package auth provides per-route HTTP middleware for verifying caller identity against the paper-board identity gRPC AuthService.
mock
Package mock provides test doubles for the identity gRPC AuthService.
Package mock provides test doubles for the identity gRPC AuthService.
Package clock provides an injectable time source for paper-board services.
Package clock provides an injectable time source for paper-board services.
Package config provides an env-only configuration loader for paper-board services.
Package config provides an env-only configuration loader for paper-board services.
Package errors provides shared sentinel errors and gRPC mapping for paper-board services.
Package errors provides shared sentinel errors and gRPC mapping for paper-board services.
Package httpclient provides a default *http.Client for outbound HTTP, wrapped with otelhttp.NewTransport so spans propagate W3C TraceContext.
Package httpclient provides a default *http.Client for outbound HTTP, wrapped with otelhttp.NewTransport so spans propagate W3C TraceContext.
Package httpmw provides shared HTTP middleware for paper-board services.
Package httpmw provides shared HTTP middleware for paper-board services.
Package log provides slog-based structured logging for paper-board services.
Package log provides slog-based structured logging for paper-board services.
Package migrator provides a thin wrapper around golang-migrate for paper-board services.
Package migrator provides a thin wrapper around golang-migrate for paper-board services.
Package obs provides OpenTelemetry SDK setup, propagation, and shutdown for paper-board services.
Package obs provides OpenTelemetry SDK setup, propagation, and shutdown for paper-board services.
Package store provides shared Postgres helpers used across paper-board services.
Package store provides shared Postgres helpers used across paper-board services.
Package testfixture provides Postgres test infrastructure for paper-board services: a process-shared testcontainers Postgres, schema-bootstrap, and per-test truncation.
Package testfixture provides Postgres test infrastructure for paper-board services: a process-shared testcontainers Postgres, schema-bootstrap, and per-test truncation.

Jump to

Keyboard shortcuts

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