Help us shape the future of Go! Take the 2026 Go Developer Survey

store

package
v0.1.2 Latest Latest
Warning

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

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

Documentation

Overview

Package store provides PostgreSQL-backed data access for Creel.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewPool

func NewPool(ctx context.Context, postgresURL string) (*pgxpool.Pool, error)

NewPool creates a new pgxpool connection pool. coverage:ignore - database infrastructure

func RunMigrations

func RunMigrations(postgresURL, migrationsPath string) error

RunMigrations applies all pending database migrations. coverage:ignore - database infrastructure

Types

type Chunk

type Chunk struct {
	ID          string
	DocumentID  string
	Sequence    int
	Content     string
	EmbeddingID *string
	Status      string
	CompactedBy *string
	Metadata    map[string]any
	CreatedAt   time.Time
}

Chunk represents a stored chunk.

type ChunkStore

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

ChunkStore handles chunk persistence.

func NewChunkStore

func NewChunkStore(pool DBTX) *ChunkStore

NewChunkStore creates a new chunk store. coverage:ignore - requires database

func (*ChunkStore) ChunkIDsByTopics

func (s *ChunkStore) ChunkIDsByTopics(ctx context.Context, topicIDs []string) ([]string, error)

ChunkIDsByTopics returns all active chunk IDs belonging to the given topics. coverage:ignore - requires database

func (*ChunkStore) Create

func (s *ChunkStore) Create(ctx context.Context, documentID, content string, sequence int, metadata map[string]any) (*Chunk, error)

Create inserts a new chunk and returns it. coverage:ignore - requires database

func (*ChunkStore) Delete

func (s *ChunkStore) Delete(ctx context.Context, id string) error

Delete removes a chunk. coverage:ignore - requires database

func (*ChunkStore) DocumentTopicID

func (s *ChunkStore) DocumentTopicID(ctx context.Context, documentID string) (string, error)

DocumentTopicID returns the topic ID for a chunk's document. coverage:ignore - requires database

func (*ChunkStore) DocumentTopicIDs

func (s *ChunkStore) DocumentTopicIDs(ctx context.Context, docIDs []string) (map[string]string, error)

DocumentTopicIDs returns a mapping of document ID to topic ID for the given documents. coverage:ignore - requires database

func (*ChunkStore) Get

func (s *ChunkStore) Get(ctx context.Context, id string) (*Chunk, error)

Get retrieves a chunk by ID. coverage:ignore - requires database

func (*ChunkStore) GetMultiple

func (s *ChunkStore) GetMultiple(ctx context.Context, ids []string) (map[string]*Chunk, error)

GetMultiple retrieves multiple chunks by ID in a single query. coverage:ignore - requires database

func (*ChunkStore) SetEmbeddingID

func (s *ChunkStore) SetEmbeddingID(ctx context.Context, chunkID, embeddingID string) error

SetEmbeddingID updates the embedding_id for a chunk. coverage:ignore - requires database

type DBTX

type DBTX interface {
	Exec(ctx context.Context, sql string, arguments ...any) (pgconn.CommandTag, error)
	Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error)
	QueryRow(ctx context.Context, sql string, args ...any) pgx.Row
	Begin(ctx context.Context) (pgx.Tx, error)
}

DBTX is the interface satisfied by *pgxpool.Pool and *pgx.Tx. All stores accept this instead of a concrete pool so that a QueryCounter (or transaction) can be substituted in tests.

type Document

type Document struct {
	ID        string
	TopicID   string
	Slug      string
	Name      string
	DocType   string
	Metadata  map[string]any
	CreatedAt time.Time
	UpdatedAt time.Time
}

Document represents a stored document.

type DocumentStore

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

DocumentStore handles document persistence.

func NewDocumentStore

func NewDocumentStore(pool DBTX) *DocumentStore

NewDocumentStore creates a new document store. coverage:ignore - requires database

func (*DocumentStore) Create

func (s *DocumentStore) Create(ctx context.Context, topicID, slug, name, docType string, metadata map[string]any) (*Document, error)

Create inserts a new document. coverage:ignore - requires database

func (*DocumentStore) Delete

func (s *DocumentStore) Delete(ctx context.Context, id string) error

Delete removes a document and cascades to chunks. coverage:ignore - requires database

func (*DocumentStore) Get

func (s *DocumentStore) Get(ctx context.Context, id string) (*Document, error)

Get retrieves a document by ID. coverage:ignore - requires database

func (*DocumentStore) ListByTopic

func (s *DocumentStore) ListByTopic(ctx context.Context, topicID string) ([]Document, error)

ListByTopic returns documents in a topic. coverage:ignore - requires database

func (*DocumentStore) TopicIDForDocument

func (s *DocumentStore) TopicIDForDocument(ctx context.Context, docID string) (string, error)

TopicIDForDocument returns the topic ID that owns the given document. coverage:ignore - requires database

func (*DocumentStore) Update

func (s *DocumentStore) Update(ctx context.Context, id, name, docType string, metadata map[string]any) (*Document, error)

Update modifies a document's name, doc_type, and metadata. coverage:ignore - requires database

type GrantStore

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

GrantStore provides access to topic grants and ownership from PostgreSQL.

func NewGrantStore

func NewGrantStore(pool DBTX) *GrantStore

NewGrantStore creates a new grant store. coverage:ignore - requires database

func (*GrantStore) GrantsForPrincipal

func (s *GrantStore) GrantsForPrincipal(ctx context.Context, principals []string) ([]auth.Grant, error)

GrantsForPrincipal returns all grants matching any of the given principals. coverage:ignore - requires database

func (*GrantStore) TopicOwner

func (s *GrantStore) TopicOwner(ctx context.Context, topicID string) (string, error)

TopicOwner returns the owner of the given topic. coverage:ignore - requires database

type SystemAccount

type SystemAccount struct {
	ID          string
	Name        string
	Description string
	Principal   string
	CreatedAt   time.Time
}

SystemAccount represents a stored system account.

type SystemAccountKey

type SystemAccountKey struct {
	ID             string
	AccountID      string
	KeyHash        string
	KeyPrefix      string
	Status         string // "active", "grace_period", "revoked"
	GraceExpiresAt *time.Time
	CreatedAt      time.Time
	RevokedAt      *time.Time
}

SystemAccountKey represents a stored API key.

type SystemAccountStore

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

SystemAccountStore handles system account and key persistence.

func NewSystemAccountStore

func NewSystemAccountStore(pool DBTX) *SystemAccountStore

NewSystemAccountStore creates a new store backed by the given pool. coverage:ignore - requires database

func (*SystemAccountStore) Create

func (s *SystemAccountStore) Create(ctx context.Context, name, description string) (*SystemAccount, string, error)

Create inserts a new system account and its initial key. Returns the account and the raw API key (shown once). coverage:ignore - requires database

func (*SystemAccountStore) Delete

func (s *SystemAccountStore) Delete(ctx context.Context, id string) error

Delete removes a system account and cascades to its keys. coverage:ignore - requires database

func (*SystemAccountStore) List

List returns all system accounts. coverage:ignore - requires database

func (*SystemAccountStore) LookupKeyHash

func (s *SystemAccountStore) LookupKeyHash(ctx context.Context, hash string) (*auth.Principal, error)

LookupKeyHash implements auth.KeyLookup. It resolves a key hash to a principal by checking active and grace-period keys. coverage:ignore - requires database

func (*SystemAccountStore) RevokeKey

func (s *SystemAccountStore) RevokeKey(ctx context.Context, accountID string) error

RevokeKey immediately revokes all active keys for the account. coverage:ignore - requires database

func (*SystemAccountStore) RotateKey

func (s *SystemAccountStore) RotateKey(ctx context.Context, accountID string, gracePeriod time.Duration) (string, error)

RotateKey generates a new key for the account. If gracePeriod > 0, old active keys enter grace period; otherwise they are revoked immediately. coverage:ignore - requires database

type Topic

type Topic struct {
	ID          string
	Slug        string
	Name        string
	Description string
	Owner       string
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

Topic represents a stored topic.

type TopicGrant

type TopicGrant struct {
	ID         string
	TopicID    string
	Principal  string
	Permission string
	GrantedBy  string
	CreatedAt  time.Time
}

TopicGrant represents a stored topic grant.

type TopicStore

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

TopicStore handles topic and grant persistence.

func NewTopicStore

func NewTopicStore(pool DBTX) *TopicStore

NewTopicStore creates a new topic store. coverage:ignore - requires database

func (*TopicStore) Create

func (s *TopicStore) Create(ctx context.Context, slug, name, description, owner string) (*Topic, error)

Create inserts a new topic. coverage:ignore - requires database

func (*TopicStore) Delete

func (s *TopicStore) Delete(ctx context.Context, id string) error

Delete removes a topic and cascades to grants, documents, chunks. coverage:ignore - requires database

func (*TopicStore) Get

func (s *TopicStore) Get(ctx context.Context, id string) (*Topic, error)

Get retrieves a topic by ID. coverage:ignore - requires database

func (*TopicStore) Grant

func (s *TopicStore) Grant(ctx context.Context, topicID, principal, permission, grantedBy string) (*TopicGrant, error)

Grant creates or updates a topic grant. coverage:ignore - requires database

func (*TopicStore) ListForPrincipals

func (s *TopicStore) ListForPrincipals(ctx context.Context, principals []string) ([]Topic, error)

ListForPrincipals returns topics accessible to the given principal identities. If principals is nil, returns all topics (for system accounts). coverage:ignore - requires database

func (*TopicStore) ListGrants

func (s *TopicStore) ListGrants(ctx context.Context, topicID string) ([]TopicGrant, error)

ListGrants returns all grants for a topic. coverage:ignore - requires database

func (*TopicStore) Revoke

func (s *TopicStore) Revoke(ctx context.Context, topicID, principal string) error

Revoke removes a topic grant. coverage:ignore - requires database

func (*TopicStore) Update

func (s *TopicStore) Update(ctx context.Context, id, name, description string) (*Topic, error)

Update modifies a topic's name and description. coverage:ignore - requires database

Directories

Path Synopsis
Package dbtest provides test helpers for database stores.
Package dbtest provides test helpers for database stores.

Jump to

Keyboard shortcuts

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