PostgreSQL Store (Grove ORM) PostgreSQL backend using Grove ORM with pgdriver.
The PostgreSQL store (store/postgres) provides a production-ready backend that uses the Grove ORM with pgdriver for PostgreSQL. It maps Vault entities to Grove model structs and uses programmatic migrations to create all required tables.
import (
" github.com/xraph/grove "
" github.com/xraph/grove/drivers/pgdriver "
" github.com/xraph/vault/store/postgres "
)
// Open a PostgreSQL connection via Grove's pgdriver.
db := grove. Open (pgdriver. New (
pgdriver. WithDSN ( "postgres://user:pass@localhost:5432/vault?sslmode=disable" ),
))
s := postgres. New (db)
if err := s. Migrate (ctx); err != nil {
log. Fatal (err)
}
Option Signature Description WithLoggerWithLogger(l *slog.Logger) StoreOptionSets the structured logger. Defaults to slog.Default().
s := postgres. New (db, postgres. WithLogger (slog. Default ()))
Aspect Detail Driver Grove ORM with pgdriver (PostgreSQL) Migrations Programmatic DDL statements executed via pgdriver.PgDB Transactions Database-level ACID transactions
The store creates 11 tables across secrets, flags, config, overrides, rotation, and audit:
Table Entity vault_secretssecret.Secretvault_secret_versionssecret.Versionvault_flagsflag.Definitionvault_flag_rulesflag.Rulevault_flag_overridesflag.TenantOverridevault_configconfig.Entryvault_config_versionsconfig.EntryVersionvault_overridesoverride.Overridevault_rotation_policiesrotation.Policyvault_rotation_recordsrotation.Recordvault_auditaudit.Entry
Method Behaviour Migrate(ctx)Creates all 11 tables and indexes via programmatic DDL Ping(ctx)Calls db.Ping(ctx) to verify connectivity Close()Calls db.Close() to release the database connection
Production deployments -- durable, ACID-compliant storage with connection pooling.
Multi-instance deployments -- all application instances share the same database.
Teams already using PostgreSQL -- leverage existing infrastructure and expertise.