Documentation
¶
Overview ¶
Package postgres wires VersionGate to its PostgreSQL database: connection pooling and schema migrations (specs/decisions/database.md). It is infrastructure — nothing under internal/version or future domain packages may import it (.rules/architecture.md).
Index ¶
- func MigrateDown(ctx context.Context, db *sql.DB) error
- func MigrateUp(ctx context.Context, db *sql.DB) error
- func MigrationStatus(ctx context.Context, db *sql.DB) ([]*goose.MigrationStatus, error)
- func Open(ctx context.Context, dsn string) (*sql.DB, error)
- type ApplicationRepository
- func (r *ApplicationRepository) Create(ctx context.Context, projectID project.ID, identifier, displayName string, ...) (application.Application, error)
- func (r *ApplicationRepository) Deactivate(ctx context.Context, projectID project.ID, id application.ID) (application.Application, error)
- func (r *ApplicationRepository) Get(ctx context.Context, projectID project.ID, id application.ID) (application.Application, error)
- func (r *ApplicationRepository) GetByIdentifier(ctx context.Context, identifier string) (application.Application, error)
- type ProjectRepository
- type ReleaseRepository
- func (r *ReleaseRepository) Create(ctx context.Context, applicationID application.ID, v version.Version, ...) (release.Release, error)
- func (r *ReleaseRepository) GetByVersion(ctx context.Context, applicationID application.ID, v version.Version, ...) (release.Release, error)
- func (r *ReleaseRepository) ListByApplication(ctx context.Context, applicationID application.ID) ([]release.Release, error)
- type TokenRepository
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MigrateDown ¶
MigrateDown rolls back the most recently applied migration.
func MigrationStatus ¶
MigrationStatus returns the applied/pending status of every known migration, in order.
Types ¶
type ApplicationRepository ¶
type ApplicationRepository struct {
// contains filtered or unexported fields
}
ApplicationRepository is a PostgreSQL-backed implementation of application.Repository.
func NewApplicationRepository ¶
func NewApplicationRepository(db *sql.DB) *ApplicationRepository
NewApplicationRepository builds an ApplicationRepository backed by db.
func (*ApplicationRepository) Create ¶
func (r *ApplicationRepository) Create(ctx context.Context, projectID project.ID, identifier, displayName string, platform application.Platform) (application.Application, error)
func (*ApplicationRepository) Deactivate ¶
func (r *ApplicationRepository) Deactivate(ctx context.Context, projectID project.ID, id application.ID) (application.Application, error)
func (*ApplicationRepository) Get ¶
func (r *ApplicationRepository) Get(ctx context.Context, projectID project.ID, id application.ID) (application.Application, error)
func (*ApplicationRepository) GetByIdentifier ¶
func (r *ApplicationRepository) GetByIdentifier(ctx context.Context, identifier string) (application.Application, error)
GetByIdentifier looks up an Application by identifier alone, across all Projects — see application.Repository.GetByIdentifier's doc comment for why, and for ErrIdentifierAmbiguous's meaning. LIMIT 2 (rather than 1) is deliberate: it lets this method distinguish "found exactly one" from "found more than one" in a single query.
type ProjectRepository ¶
type ProjectRepository struct {
// contains filtered or unexported fields
}
ProjectRepository is a PostgreSQL-backed implementation of project.Repository.
func NewProjectRepository ¶
func NewProjectRepository(db *sql.DB) *ProjectRepository
NewProjectRepository builds a ProjectRepository backed by db.
func (*ProjectRepository) Deactivate ¶
type ReleaseRepository ¶
type ReleaseRepository struct {
// contains filtered or unexported fields
}
ReleaseRepository is a PostgreSQL-backed implementation of release.Repository. It relies entirely on the database's unique constraint on (application_id, major, minor, patch, build_number) to detect duplicates — Create makes no separate existence check before inserting, so it is safe under concurrent or retried calls.
func NewReleaseRepository ¶
func NewReleaseRepository(db *sql.DB) *ReleaseRepository
NewReleaseRepository builds a ReleaseRepository backed by db.
func (*ReleaseRepository) GetByVersion ¶
func (*ReleaseRepository) ListByApplication ¶
func (r *ReleaseRepository) ListByApplication(ctx context.Context, applicationID application.ID) ([]release.Release, error)
type TokenRepository ¶
type TokenRepository struct {
// contains filtered or unexported fields
}
TokenRepository is a PostgreSQL-backed implementation of token.Repository. It only ever reads or writes token_hash — the raw token value never reaches this package.
func NewTokenRepository ¶
func NewTokenRepository(db *sql.DB) *TokenRepository
NewTokenRepository builds a TokenRepository backed by db.