contract

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(t *testing.T, name string, factory func() Store)

Run executes the full store contract test suite against a store implementation. The factory must return a fresh, empty store for each test.

Types

type Store

type Store interface {
	// Souls
	ListSouls(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Soul, error)
	GetSoul(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Soul, error)
	FindSoul(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Soul, error)
	UpsertSoul(ctx context.Context, soul *models.Soul) error
	DeleteSoul(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error

	// Personas
	ListPersonas(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Persona, error)
	GetPersona(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Persona, error)
	FindPersona(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Persona, error)
	UpsertPersona(ctx context.Context, persona *models.Persona) error
	DeletePersona(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error

	// Rules
	ListRules(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Rule, error)
	GetRule(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Rule, error)
	FindRule(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Rule, error)
	UpsertRule(ctx context.Context, rule *models.Rule) error
	DeleteRule(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error

	// Brains
	ListBrains(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Brain, error)
	GetBrain(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Brain, error)
	FindBrain(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Brain, error)
	UpsertBrain(ctx context.Context, brain *models.Brain) error
	DeleteBrain(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error

	// Layer overrides
	FindLayerOverride(ctx context.Context, workspaceID models.WorkspaceID, scopeType models.ScopeType, referenceID string) (*models.LayerOverride, error)
	UpsertLayerOverride(ctx context.Context, override *models.LayerOverride) error
	DeleteLayerOverride(ctx context.Context, workspaceID models.WorkspaceID, scopeType models.ScopeType, referenceID string) error

	// Content versions
	ListContentVersions(ctx context.Context, workspaceID models.WorkspaceID, contentType models.ContentType, slug models.Slug) ([]models.VersionSummary, error)
	GetContentVersion(ctx context.Context, workspaceID models.WorkspaceID, contentType models.ContentType, slug models.Slug, version int) (*models.ContentVersion, error)

	// Workspaces
	ListWorkspaces(ctx context.Context) ([]models.Workspace, error)
	GetWorkspace(ctx context.Context, id models.WorkspaceID) (*models.Workspace, error)
	FindWorkspaceByName(ctx context.Context, name string) (*models.Workspace, error)
	CreateWorkspace(ctx context.Context, ws *models.Workspace) error
	UpdateWorkspace(ctx context.Context, ws *models.Workspace) error
	DeleteWorkspace(ctx context.Context, id models.WorkspaceID) error

	// Projects
	ListProjects(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Project, error)
	GetProject(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Project, error)
	FindProjectByPath(ctx context.Context, workspaceID models.WorkspaceID, path string) (*models.Project, error)
	UpsertProject(ctx context.Context, project *models.Project) error
	DeleteProject(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error

	// API keys
	ListAPIKeys(ctx context.Context) ([]models.APIKeySummary, error)
	GetAPIKey(ctx context.Context, id models.APIKeyID) (*models.APIKey, error)
	GetAPIKeyByHash(ctx context.Context, keyHash string) (*models.APIKey, error)
	CreateAPIKey(ctx context.Context, key *models.APIKey) error
	RevokeAPIKey(ctx context.Context, key *models.APIKey) error
	DeleteAPIKey(ctx context.Context, id models.APIKeyID) error

	Close() error
}

Store defines the full method set that any store implementation must satisfy. This interface exists only in the contract package — apps define their own narrow interfaces per the app-local pattern.

Jump to

Keyboard shortcuts

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