@defrex/autobuild-postgres-store
v0.8.0
Published
Readme
@defrex/autobuild-postgres-store
Serverless-safe Autobuild persistence using PostgreSQL and either an
S3-compatible object store or Vercel Blob. This is a separate package: installing
the @defrex/autobuild CLI does not install its database/blob provider
dependencies. A project that embeds the adapter adds it directly:
bun add @defrex/autobuild-postgres-storeSetup
To run the migration from the hosted deployment's own checkout, choose the adapter-compatible tag shown in GitHub Releases, then obtain and install that exact repository revision in a dedicated checkout:
git clone --depth 1 --branch v0.6.0 --single-branch https://github.com/defrex/autobuild.git autobuild-v0.6.0
cd autobuild-v0.6.0
bun install --frozen-lockfile
DATABASE_URL=postgres://… bun run postgres:migrateReplace v0.6.0 with the selected release tag. The migration is idempotent.
The adapter reads the conventional DATABASE_URL, which Vercel's Neon and
Postgres storage integrations inject; set AB_POSTGRES_URL to override it
explicitly.
Schema diagnostics refer to the root postgres:migrate script in this pinned
release checkout. The database identity needs permission to create tables,
constraints, and migration markers during migration and to select, insert,
update, and delete the resulting tables at runtime. The ticket schema has its
own version/checksum marker, so migrating an existing BuildStore v1 database
adds team-scoped tickets, comments, and blockers without replacing the
established BuildStore marker. Opening against a missing, older/newer, or
checksum-mismatched schema fails; schema creation is never implicit.
Concurrency
Identity rows are created conflict-safely before being locked for subsequent
work. Concurrent repository ensures are idempotent and all return the single
stored record. Concurrent attempts to create the same build slug produce one
winner; every other caller receives build "<slug>" already exists rather than
a raw PostgreSQL uniqueness error.
import { openPostgresBuildStoreFromEnv } from '@defrex/autobuild-postgres-store'
const store = await openPostgresBuildStoreFromEnv(process.env)S3 credentials need GetObject and PutObject on the configured bucket/prefix.
Only an object-store 404 is treated as absent; authorization and service errors
are propagated. Vercel supports either a Blob read-write token or a Vercel OIDC
token paired with its Blob store ID.
PostgresTicketDatabase.source({ teamKey, claimedState?, createState? }) creates
a request-bound TicketSource view. The deployment supplies four distinct
lifecycle names; the defaults are Triage, Ready, Doing, and Done. Ticket bodies
are stored as PostgreSQL text and returned unchanged.
For an authenticated HTTP deployment of this adapter, see the
@defrex/autobuild-hosted-store-service guide.
