Fix assignee filter bug in List
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"axolotl/db"
|
||||
"axolotl/models"
|
||||
"axolotl/output"
|
||||
"axolotl/service"
|
||||
"fmt"
|
||||
"os"
|
||||
"slices"
|
||||
@@ -26,11 +27,18 @@ var updateCmd = &cobra.Command{
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
return
|
||||
}
|
||||
addRels, rmRels := make(map[models.RelType][]string), make(map[models.RelType][]string)
|
||||
svc := service.NewSQLiteNodeService(d.DB, cfg.GetUser())
|
||||
|
||||
node, err := svc.GetByID(args[0])
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "node not found:", args[0])
|
||||
return
|
||||
}
|
||||
|
||||
addRels, rmRels := make(map[models.RelType][]string), make(map[models.RelType][]string)
|
||||
parseRel := func(src []string, dst map[models.RelType][]string) bool {
|
||||
for _, r := range src {
|
||||
rt, tgt, err := db.ParseRelFlag(r)
|
||||
rt, tgt, err := parseRelFlag(r)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
return false
|
||||
@@ -44,7 +52,7 @@ var updateCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
if slices.Contains(uAddTags, "_status::done") {
|
||||
ok, blockers, err := d.CanClose(args[0])
|
||||
ok, blockers, err := svc.CanClose(args[0])
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "failed to check blockers:", err)
|
||||
return
|
||||
@@ -61,22 +69,46 @@ var updateCmd = &cobra.Command{
|
||||
uRmTags = append(uRmTags, "_prio::low", "_prio::medium", "_prio::high")
|
||||
}
|
||||
|
||||
uParams := db.UpdateParams{ClearDue: uClearDue,
|
||||
AddTags: uAddTags, RemoveTags: uRmTags, AddRels: addRels, RemoveRels: rmRels}
|
||||
if cmd.Flags().Changed("title") {
|
||||
uParams.Title = &uTitle
|
||||
node.Title = uTitle
|
||||
}
|
||||
if cmd.Flags().Changed("content") {
|
||||
uParams.Content = &uContent
|
||||
node.Content = uContent
|
||||
}
|
||||
if cmd.Flags().Changed("due") {
|
||||
uParams.DueDate = &uDue
|
||||
node.DueDate = uDue
|
||||
}
|
||||
if err := d.UpdateNode(args[0], uParams); err != nil {
|
||||
if uClearDue {
|
||||
node.DueDate = ""
|
||||
}
|
||||
|
||||
for _, t := range uRmTags {
|
||||
node.Tags = slices.DeleteFunc(node.Tags, func(e string) bool { return e == t })
|
||||
}
|
||||
for _, t := range uAddTags {
|
||||
if !slices.Contains(node.Tags, t) {
|
||||
node.Tags = append(node.Tags, t)
|
||||
}
|
||||
}
|
||||
|
||||
for rt, tgts := range rmRels {
|
||||
for _, tgt := range tgts {
|
||||
node.Relations[string(rt)] = slices.DeleteFunc(node.Relations[string(rt)], func(e string) bool { return e == tgt })
|
||||
}
|
||||
}
|
||||
for rt, tgts := range addRels {
|
||||
for _, tgt := range tgts {
|
||||
if !slices.Contains(node.Relations[string(rt)], tgt) {
|
||||
node.Relations[string(rt)] = append(node.Relations[string(rt)], tgt)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err := svc.Update(node); err != nil {
|
||||
fmt.Fprintln(os.Stderr, "failed to update:", err)
|
||||
return
|
||||
}
|
||||
if n, err := d.NodeByID(args[0]); err == nil {
|
||||
if n, err := svc.GetByID(args[0]); err == nil {
|
||||
output.PrintNode(cmd.OutOrStdout(), n, jsonFlag)
|
||||
} else {
|
||||
fmt.Fprintln(os.Stderr, "failed to fetch node:", err)
|
||||
|
||||
Reference in New Issue
Block a user