refactor: clean up NodeService interface; move all integrity logic behind it

This commit is contained in:
2026-03-31 15:55:47 +02:00
parent ed9117951f
commit 8d831d131b
9 changed files with 484 additions and 388 deletions

View File

@@ -10,6 +10,7 @@ import (
)
var lTags, lRels []string
var lStatus, lPrio, lType, lNamespace, lAssignee, lMention string
var listCmd = &cobra.Command{
Use: "list", Short: "List nodes",
@@ -20,21 +21,26 @@ var listCmd = &cobra.Command{
return
}
opts := []service.ListOption{}
if len(lTags) > 0 {
opts = append(opts, service.WithTags(lTags...))
filter := service.ListFilter{
Tags: lTags,
Status: lStatus,
Priority: lPrio,
Type: lType,
Namespace: lNamespace,
Assignee: lAssignee,
Mention: lMention,
}
for _, relStr := range lRels {
rel, err := parseRelFlag(svc, relStr)
for _, r := range lRels {
ri, err := parseRelInput(r)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to parse relation flag: %v", err)
return
}
opts = append(opts, service.WithRels(rel))
filter.Rels = append(filter.Rels, ri)
}
if nodes, err := svc.List(opts...); err == nil {
if nodes, err := svc.List(filter); err == nil {
output.PrintNodes(cmd.OutOrStdout(), svc, nodes, jsonFlag)
} else {
fmt.Fprintf(os.Stderr, "err: %v\n", err)
@@ -44,9 +50,13 @@ var listCmd = &cobra.Command{
func init() {
rootCmd.AddCommand(listCmd)
addPropertyFlags(listCmd)
f := listCmd.Flags()
//TODO: assignee/ mention flags?
f.StringArrayVar(&lTags, "tag", nil, "")
f.StringArrayVar(&lRels, "rel", nil, "")
f.StringArrayVar(&lTags, "tag", nil, "filter by tag")
f.StringArrayVar(&lRels, "rel", nil, "filter by relation (type:target)")
f.StringVar(&lStatus, "status", "", "filter by status")
f.StringVar(&lPrio, "prio", "", "filter by priority")
f.StringVar(&lType, "type", "", "filter by type")
f.StringVar(&lNamespace, "namespace", "", "filter by namespace")
f.StringVar(&lAssignee, "assignee", "", "filter by assignee")
f.StringVar(&lMention, "mention", "", "filter by mention")
}