Add namespace and collection inventories

This commit is contained in:
2026-10-17 06:25:14 +00:00
parent c9b623b374
commit 8669294cf6
9 changed files with 295 additions and 3 deletions

View File

@@ -6,6 +6,12 @@ import (
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
)
// CollectionIdentity is the captured metadata for one final collection entry.
type CollectionIdentity struct {
Namespace string
ReleaseVersion *string
}
func (state *loaded) ListProfiles(ctx context.Context) ([]string, error) {
if err := ctx.Err(); err != nil {
return nil, err
@@ -28,6 +34,44 @@ func (state *loaded) ListBackends(ctx context.Context) ([]string, error) {
return backends, nil
}
func (state *loaded) ListNamespaces(ctx context.Context, kinds []string) ([]string, error) {
if err := ctx.Err(); err != nil {
return nil, err
}
selected := kinds
if len(selected) == 0 {
selected = []string{"backend", "profile", "prompt"}
}
set := make(map[string]struct{})
for _, kind := range selected {
for _, namespace := range state.namespaces[kind] {
set[namespace] = struct{}{}
}
}
namespaces := sortedKeys(set)
if err := ctx.Err(); err != nil {
return nil, err
}
return namespaces, nil
}
func (state *loaded) ListCollections(ctx context.Context) ([]CollectionIdentity, error) {
if err := ctx.Err(); err != nil {
return nil, err
}
collections := make([]CollectionIdentity, len(state.collections))
for index, collection := range state.collections {
collections[index] = CollectionIdentity{
Namespace: collection.Namespace,
ReleaseVersion: stringPointerValue(collection.ReleaseVersion),
}
}
if err := ctx.Err(); err != nil {
return nil, err
}
return collections, nil
}
func (state *loaded) ListPrompts(ctx context.Context) ([]domain.PromptIdentity, error) {
if err := ctx.Err(); err != nil {
return nil, err