compositionapi

package
v0.2.21 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2026 License: MPL-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArtifactAPI

type ArtifactAPI interface {
	Get(
		ctx context.Context,
		ref artifact.ArtifactRef,
	) (artifact.Artifact, error)

	ListByCollection(
		ctx context.Context,
		ref collection.CollectionRef,
	) ([]artifact.Artifact, error)

	Adopt(
		ctx context.Context,
		request catalog.AdoptRequest,
	) (artifact.Artifact, error)

	Pin(
		ctx context.Context,
		request catalog.PinRequest,
	) (artifact.Artifact, error)

	SetEnabled(
		ctx context.Context,
		ref artifact.ArtifactRef,
		expectedRevision uint64,
		enabled bool,
	) (artifact.Artifact, error)

	SetName(
		ctx context.Context,
		ref artifact.ArtifactRef,
		expectedRevision uint64,
		name string,
	) (artifact.Artifact, error)

	UpdateData(
		ctx context.Context,
		ref artifact.ArtifactRef,
		expectedRevision uint64,
		data json.RawMessage,
	) (artifact.Artifact, error)

	Unadopt(
		ctx context.Context,
		ref artifact.ArtifactRef,
		expectedRevision uint64,
		suppress bool,
	) error

	Purge(
		ctx context.Context,
		ref artifact.ArtifactRef,
		expectedRevision uint64,
	) error

	PurgeAndSuppress(
		ctx context.Context,
		ref artifact.ArtifactRef,
		expectedRevision uint64,
	) error

	ListSuppressions(
		ctx context.Context,
		ref collection.CollectionRef,
	) ([]artifact.Suppression, error)

	Suppress(
		ctx context.Context,
		request catalog.SuppressRequest,
	) (artifact.Suppression, error)

	Unsuppress(
		ctx context.Context,
		ref collection.CollectionRef,
		binding artifact.SourceBinding,
		expectedRevision uint64,
	) error
}

type CatalogAPI

type CatalogAPI interface {
	RefreshCollection(
		ctx context.Context,
		ref collection.CollectionRef,
	) (catalog.RefreshCollectionResult, error)

	CurrentCatalog(
		ctx context.Context,
		ref collection.CollectionRef,
	) (catalog.Snapshot, error)

	InspectCollectionCatalog(
		ctx context.Context,
		ref collection.CollectionRef,
	) (catalog.CatalogInspection, error)
}

type CollectionAPI

type CollectionAPI interface {
	Create(
		ctx context.Context,
		rootID root.RootID,
		draft collection.Draft,
		attachments []collection.AttachmentDraft,
	) (collection.Collection, []collection.Attachment, error)

	Get(
		ctx context.Context,
		ref collection.CollectionRef,
	) (collection.Collection, error)

	GetRetired(
		ctx context.Context,
		ref collection.CollectionRef,
	) (collection.Collection, error)

	ListByRoot(
		ctx context.Context,
		rootID root.RootID,
	) ([]collection.Collection, error)

	Update(
		ctx context.Context,
		ref collection.CollectionRef,
		update collection.Update,
	) (collection.Collection, error)

	Retire(
		ctx context.Context,
		ref collection.CollectionRef,
		expectedRevision uint64,
	) (collection.Collection, error)

	Purge(
		ctx context.Context,
		ref collection.CollectionRef,
		expectedRevision uint64,
	) error

	Attach(
		ctx context.Context,
		ref collection.CollectionRef,
		expectedCollectionRevision uint64,
		draft collection.AttachmentDraft,
	) (collection.Collection, collection.Attachment, error)

	GetAttachment(
		ctx context.Context,
		ref collection.CollectionRef,
		sourceID source.SourceID,
	) (collection.Attachment, error)

	ListAttachments(
		ctx context.Context,
		ref collection.CollectionRef,
	) ([]collection.Attachment, error)

	UpdateAttachment(
		ctx context.Context,
		ref collection.CollectionRef,
		sourceID source.SourceID,
		update collection.AttachmentUpdate,
	) (collection.Collection, collection.Attachment, error)

	Detach(
		ctx context.Context,
		ref collection.CollectionRef,
		sourceID source.SourceID,
		expectedCollectionRevision uint64,
		expectedAttachmentRevision uint64,
	) (collection.Collection, error)

	ReplaceAttachment(
		ctx context.Context,
		ref collection.CollectionRef,
		replacement collection.AttachmentReplacement,
	) (collection.Collection, collection.Attachment, error)
}

type Config

type Config struct {
	BaseDirectory string

	Providers []providerapi.Provider

	ProtectedRootIDs []root.RootID
	RetainedRoots    []root.RootDraft
}

Config contains application-composition inputs for one Artifact Store.

Providers are fully constructed before Open is called. RetainedRoots are both lifecycle-policy declarations and initial generic Root declarations.

type ManagedArtifactAPI

type ManagedArtifactAPI interface {
	Publish(
		ctx context.Context,
		request artifact.PublishArtifactRequest,
	) (artifact.PublishArtifactResult, error)

	PublishCollection(
		ctx context.Context,
		request collection.PublishCollectionRequest,
	) (collection.PublishCollectionResult, error)

	Remove(
		ctx context.Context,
		request artifact.RemoveArtifactRequest,
	) error
}

type ProtectionAPI

type ProtectionAPI interface {
	IsProtectedRoot(rootID root.RootID) bool
	RequirePrivilegedInstaller(ctx context.Context) error
}

type ResourceAPI

type ResourceAPI interface {
	ResolveArtifact(
		ctx context.Context,
		ref artifact.ArtifactRef,
		options resource.ResolveOptions,
	) (resource.ResolvedArtifact, error)

	InspectCollectionResources(
		ctx context.Context,
		ref collection.CollectionRef,
	) (resource.CollectionResourceInspection, error)

	ResolveVerifiedLocalPath(
		ctx context.Context,
		resolved resource.ResolvedArtifact,
		localLocator basespec.Locator,
	) (string, error)

	ReadCollectionEntry(
		ctx context.Context,
		ref collection.CollectionRef,
		sourceID source.SourceID,
		locator basespec.Locator,
		maximumBytes int64,
	) (resource.VerifiedEntry, error)

	ReadCollectionEntryWithCatalog(
		ctx context.Context,
		ref collection.CollectionRef,
		sourceID source.SourceID,
		locator basespec.Locator,
		maximumBytes int64,
	) (resource.VerifiedCollectionEntry, error)

	ResolveSourceLocalPath(
		ctx context.Context,
		rootID root.RootID,
		sourceID source.SourceID,
		locator basespec.Locator,
	) (string, error)

	SupportsLocalPath(kind source.SourceKind) bool
}

type RootAPI

type RootAPI interface {
	Create(
		ctx context.Context,
		draft root.RootDraft,
	) (root.Root, error)

	Get(
		ctx context.Context,
		id root.RootID,
	) (root.Root, error)

	List(ctx context.Context) ([]root.Root, error)

	Update(
		ctx context.Context,
		id root.RootID,
		update root.RootUpdate,
	) (root.Root, error)

	Retire(
		ctx context.Context,
		id root.RootID,
		expectedRevision uint64,
	) (root.Root, error)

	Purge(
		ctx context.Context,
		id root.RootID,
		expectedRevision uint64,
	) error
}

type SchemaAPI

type SchemaAPI interface {
	CanonicalizeExpected(
		ctx context.Context,
		expected schema.Key,
		raw []byte,
	) (schema.ParsedDocument, error)
}

type SourceAPI

type SourceAPI interface {
	Create(
		ctx context.Context,
		rootID root.RootID,
		draft source.Draft,
	) (source.Summary, error)

	CreateWithStatus(
		ctx context.Context,
		rootID root.RootID,
		draft source.Draft,
	) (source.Summary, bool, error)

	Discard(
		ctx context.Context,
		rootID root.RootID,
		sourceID source.SourceID,
		expectedRevision uint64,
	) error

	Get(
		ctx context.Context,
		rootID root.RootID,
		sourceID source.SourceID,
	) (source.Summary, error)

	List(
		ctx context.Context,
		rootID root.RootID,
	) ([]source.Summary, error)

	Update(
		ctx context.Context,
		rootID root.RootID,
		sourceID source.SourceID,
		update source.Update,
	) (source.Summary, error)

	Retire(
		ctx context.Context,
		rootID root.RootID,
		sourceID source.SourceID,
		expectedRevision uint64,
	) (source.Summary, error)

	Purge(
		ctx context.Context,
		rootID root.RootID,
		sourceID source.SourceID,
		expectedRevision uint64,
	) error

	Kinds() []source.SourceKind
}

type Store

type Store struct {
	Roots            RootAPI
	Sources          SourceAPI
	Collections      CollectionAPI
	Artifacts        ArtifactAPI
	Catalogs         CatalogAPI
	Resources        ResourceAPI
	Schemas          SchemaAPI
	ManagedArtifacts ManagedArtifactAPI
	Protection       ProtectionAPI
	Topology         installerapi.API
	// contains filtered or unexported fields
}

Store owns the composed Artifact Store and its lifecycle.

The entity fields are direct, request-shape-free contracts. Application domains receive only the fields they need.

func Open

func Open(
	ctx context.Context,
	config Config,
) (*Store, error)

func (*Store) Close

func (s *Store) Close() error

func (*Store) CommitTopologyHydration

func (s *Store) CommitTopologyHydration(
	ctx context.Context,
	desired topology.Hydration,
) error

func (*Store) EnsureProtectedTopology

func (s *Store) EnsureProtectedTopology(
	ctx context.Context,
	declaration topology.Declaration,
) (topology.Installed, error)

func (*Store) PrepareTopologyHydrations

func (s *Store) PrepareTopologyHydrations(
	ctx context.Context,
	desired []topology.Hydration,
) (map[string]bool, error)

Jump to

Keyboard shortcuts

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