storage

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package storage defines the enforced data-layer contracts used by repositories.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DocumentExecutor

type DocumentExecutor interface {
	Run(ctx context.Context, command string, payload any, out any) error
}

DocumentExecutor is the execution surface used by document operations.

type DocumentOperation

type DocumentOperation interface {
	ExecuteDocument(ctx context.Context, exec DocumentExecutor) error
}

DocumentOperation encapsulates repository-owned document query logic.

func DocumentRun

func DocumentRun(command string, payload any, out any) DocumentOperation

DocumentRun builds an execution-only document operation.

type DocumentStore

type DocumentStore interface {
	Store
	TransactionalStore
	Execute(ctx context.Context, op DocumentOperation) error
}

DocumentStore executes repository-defined document operations.

type Kind

type Kind string

Kind identifies the storage backend family.

const (
	KindRelational Kind = "relational"
	KindDocument   Kind = "document"
)

type NoopDocumentStore

type NoopDocumentStore struct{}

NoopDocumentStore is a transaction-capable document store placeholder. It executes document operations through a no-op executor contract.

func (NoopDocumentStore) Execute

Execute runs one document operation with a no-op executor.

func (NoopDocumentStore) Kind

func (NoopDocumentStore) Kind() Kind

Kind identifies this store as document-oriented.

func (NoopDocumentStore) WithTx

func (NoopDocumentStore) WithTx(ctx context.Context, fn func(ctx context.Context) error) error

WithTx provides semantic transaction scopes for document backends.

type PostgresRelationalStore

type PostgresRelationalStore struct {
	// contains filtered or unexported fields
}

PostgresRelationalStore executes relational repository operations over pgx.

func NewPostgresRelationalStore

func NewPostgresRelationalStore(pool *pgxpool.Pool) (*PostgresRelationalStore, error)

NewPostgresRelationalStore creates a relational store backed by a pgx pool.

func (*PostgresRelationalStore) Execute

Execute runs one repository-defined relational operation.

func (*PostgresRelationalStore) Kind

func (s *PostgresRelationalStore) Kind() Kind

Kind identifies this store as relational.

func (*PostgresRelationalStore) WithTx

func (s *PostgresRelationalStore) WithTx(ctx context.Context, fn func(ctx context.Context) error) (err error)

WithTx enforces a transaction scope for write-path orchestration.

type RelationalExecutor

type RelationalExecutor interface {
	Exec(ctx context.Context, query string, args ...any) error
	QueryRow(ctx context.Context, query string, scan func(RowScanner) error, args ...any) error
	Query(ctx context.Context, query string, scan func(RowScanner) error, args ...any) error
}

RelationalExecutor is the execution surface used by relational operations.

type RelationalOperation

type RelationalOperation interface {
	ExecuteRelational(ctx context.Context, exec RelationalExecutor) error
}

RelationalOperation encapsulates repository-owned relational query logic.

func RelationalExec

func RelationalExec(query string, args ...any) RelationalOperation

RelationalExec builds an execution-only operation for write statements.

func RelationalQueryMany

func RelationalQueryMany(query string, scan func(RowScanner) error, args ...any) RelationalOperation

RelationalQueryMany builds an operation for scanning many rows.

func RelationalQueryOne

func RelationalQueryOne(query string, scan func(RowScanner) error, args ...any) RelationalOperation

RelationalQueryOne builds an operation that scans exactly one row.

type RelationalStore

type RelationalStore interface {
	Store
	TransactionalStore
	Execute(ctx context.Context, op RelationalOperation) error
}

RelationalStore executes repository-defined relational operations.

type RowScanner

type RowScanner interface {
	Scan(dest ...any) error
}

RowScanner is the minimal row scanning contract used by repositories.

type Store

type Store interface {
	Kind() Kind
}

Store is the root store contract for backend identification.

type TransactionalStore

type TransactionalStore interface {
	WithTx(ctx context.Context, fn func(ctx context.Context) error) error
}

TransactionalStore is mandatory for all stores. Implementations can provide backend-native or semantic no-op transactions.

Jump to

Keyboard shortcuts

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