sdk

module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: May 3, 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 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