store

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: May 28, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package store handles all SQLite persistence for spec. No other package opens the database or writes raw SQL.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultDBPath

func DefaultDBPath() string

DefaultDBPath returns the default database path.

Types

type ActivityEntry

type ActivityEntry struct {
	ID        int64
	SpecID    string
	EventType string
	Summary   string
	Metadata  string
	UserName  string
	CreatedAt time.Time
}

ActivityEntry represents a single event in the activity log.

type CacheEntry

type CacheEntry struct {
	Value     string
	Fresh     bool
	FetchedAt time.Time
}

CacheEntry holds a cached value along with its metadata.

type DB

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

DB wraps a SQLite database connection.

func Open

func Open(path string) (*DB, error)

Open opens or creates the SQLite database at the given path.

func OpenMemory

func OpenMemory() (*DB, error)

OpenMemory opens an in-memory SQLite database for testing.

func (*DB) ActivityCountByType

func (db *DB) ActivityCountByType(since time.Time) (map[string]int, error)

ActivityCountByType returns event counts grouped by event_type since the given time.

func (*DB) ActivityForSpec

func (db *DB) ActivityForSpec(specID string, limit int) ([]ActivityEntry, error)

ActivityForSpec returns activity entries for a specific spec.

func (*DB) ActivityForType

func (db *DB) ActivityForType(eventType string, since time.Time) ([]ActivityEntry, error)

ActivityForType returns all entries of a specific event type since the given time.

func (*DB) ActivityLog

func (db *DB) ActivityLog(specID, eventType, summary, metadata, userName string) error

ActivityLog appends an event to the activity log.

func (*DB) ActivityPrune

func (db *DB) ActivityPrune(olderThan time.Duration) (int64, error)

ActivityPrune removes activity older than the given duration.

func (*DB) ActivitySince

func (db *DB) ActivitySince(since time.Time) ([]ActivityEntry, error)

ActivitySince returns activity entries since the given time.

func (*DB) CacheClear

func (db *DB) CacheClear() error

CacheClear removes all cache entries.

func (*DB) CacheDelete

func (db *DB) CacheDelete(key string) error

CacheDelete removes a cache entry.

func (*DB) CacheGet

func (db *DB) CacheGet(key string) (value string, fresh bool, err error)

CacheGet retrieves a cached value by key. Returns the value and whether the cache entry is still fresh (within TTL). Returns "", false if not found.

func (*DB) CacheGetEntry

func (db *DB) CacheGetEntry(key string) (CacheEntry, error)

CacheGetEntry retrieves a cache entry with full metadata including fetch time.

func (*DB) CacheSet

func (db *DB) CacheSet(key, value string, ttlSeconds int) error

CacheSet stores a value in the cache with the given TTL in seconds.

func (*DB) Close

func (db *DB) Close() error

Close closes the database connection.

func (*DB) Conn

func (db *DB) Conn() *sql.DB

Conn returns the underlying sql.DB for direct queries.

func (*DB) EmbeddingDeleteSpec

func (db *DB) EmbeddingDeleteSpec(specID string) error

EmbeddingDeleteSpec removes all embeddings for a spec.

func (*DB) EmbeddingSearch

func (db *DB) EmbeddingSearch(queryVector []float32, limit int) ([]EmbeddingEntry, error)

EmbeddingSearch finds the most similar embeddings to the query vector. Uses brute-force cosine similarity (sufficient for hundreds of specs).

func (*DB) EmbeddingUpsert

func (db *DB) EmbeddingUpsert(specID, section, content string, vector []float32, model string) error

EmbeddingUpsert inserts or updates an embedding for a spec section.

func (*DB) FocusedSpecClear

func (db *DB) FocusedSpecClear() error

FocusedSpecClear clears the globally focused spec ID.

func (*DB) FocusedSpecGet

func (db *DB) FocusedSpecGet() (string, error)

FocusedSpecGet returns the globally focused spec ID, if one is set.

func (*DB) FocusedSpecSet

func (db *DB) FocusedSpecSet(specID string) error

FocusedSpecSet stores the globally focused spec ID.

func (*DB) SessionDelete

func (db *DB) SessionDelete(specID string) error

SessionDelete removes a session.

func (*DB) SessionGet

func (db *DB) SessionGet(specID string) (string, error)

SessionGet retrieves the session state JSON for a spec.

func (*DB) SessionList

func (db *DB) SessionList() ([]string, error)

SessionList returns all active sessions.

func (*DB) SessionMostRecent

func (db *DB) SessionMostRecent() (string, error)

SessionMostRecent returns the spec ID of the most recently updated session.

func (*DB) SessionSet

func (db *DB) SessionSet(specID, state string) error

SessionSet stores session state for a spec.

func (*DB) SyncStateForSpec

func (db *DB) SyncStateForSpec(specID string) (map[string]map[string]SyncStateEntry, error)

SyncStateForSpec returns all sync state entries for a spec keyed by section and direction.

func (*DB) SyncStateGet

func (db *DB) SyncStateGet(specID, section, direction string) (*SyncStateEntry, error)

SyncStateGet returns the last synced hash for a spec section and direction.

func (*DB) SyncStateSet

func (db *DB) SyncStateSet(specID, section, direction, hash string) error

SyncStateSet upserts the last synced hash for a spec section and direction.

type EmbeddingEntry

type EmbeddingEntry struct {
	ID        int64
	SpecID    string
	Section   string
	Content   string
	Vector    []float32
	Model     string
	UpdatedAt time.Time
}

EmbeddingEntry represents a stored embedding.

type SyncStateEntry

type SyncStateEntry struct {
	SpecID    string
	Section   string
	Direction string
	Hash      string
	SyncedAt  time.Time
}

SyncStateEntry records the last hash synced for one spec section and direction.

Jump to

Keyboard shortcuts

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