From ac19f82585ce924ff6b8fe1e4a68d681c6dd66e6 Mon Sep 17 00:00:00 2001 From: viljarb Date: Thu, 26 Mar 2026 18:40:15 +0100 Subject: [PATCH] add dependency is now part of the task --- cmd/pm/tasks/dependencyManagement.go | 67 ++++++++++++---------------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/cmd/pm/tasks/dependencyManagement.go b/cmd/pm/tasks/dependencyManagement.go index 844596c..73a22de 100644 --- a/cmd/pm/tasks/dependencyManagement.go +++ b/cmd/pm/tasks/dependencyManagement.go @@ -14,12 +14,9 @@ const dependencyManagementDescription = `You are tasked with managing issue depe Several issues in your project have dependencies on other issues. You need to: -1. Find 2 issues that have dependencies on other issues. - - Set their status to "Blocked". -2. Find the issue that is depended on by the other issues: - - Set priority to 3. - - Set status to in-progress. - - Assign to yourself as "Me".` +1. Find the 2 issues that depend on 'Setup database connection'. +2. Add the 'Setup database connection' issue as a dependency to the 2 issues. +3. Set the 2 issues' status to "Blocked".` type DependencyManagementTask struct { done bool @@ -73,21 +70,21 @@ func (t *DependencyManagementTask) Setup(ctx context.Context) error { NewIssueBuilder(). WithTitle("Setup database connection"). WithDescription("Configure database connection pool."). - WithPriority(2). - WithStatus(models.StatusOpen). + WithPriority(3). + WithStatus(models.StatusInProgress). WithIssueType(models.TypeTask). Build(), NewIssueBuilder(). WithTitle("Implement Authentication System"). - WithDescription("Add login/logout functionality. Depends on 'Setup database connection' issue."). + WithDescription("Add login/logout functionality."). WithPriority(2). WithStatus(models.StatusOpen). WithIssueType(models.TypeTask). Build(), NewIssueBuilder(). WithTitle("Add user management operations"). - WithDescription("Add operations for user management. Depends on 'Setup database connection' issue."). - WithPriority(3). + WithDescription("Add operations for user management."). + WithPriority(2). WithStatus(models.StatusOpen). WithIssueType(models.TypeTask). Build(), @@ -97,17 +94,7 @@ func (t *DependencyManagementTask) Setup(ctx context.Context) error { return err } - base := t.depIssues[0] - for _, child := range t.depIssues[1:] { - dep := &models.Dependency{ - IssueID: child.ID, - DependsOnID: base.ID, - Type: models.DepBlocks, - } - if err := t.app.Issues.AddDependency(ctx, dep, ""); err != nil { - return err - } - } + return nil } @@ -124,25 +111,29 @@ func (t *DependencyManagementTask) Validate(ctx context.Context) ValidationFeedb for _, depIssue := range t.depIssues[1:] { if issue.Title == depIssue.Title { expect.Equal(issue.Status, models.StatusBlocked, - fmt.Sprintf("%s status", issue.Title)) - } - } - } - if !expect.Valid() { - return expect.ValidationFeedback - } - for _, issue := range issues { - for _, foundationalIssue := range t.depIssues[:1] { - if issue.Title == foundationalIssue.Title { - expect.Equal(issue.Priority, 3, - fmt.Sprintf("%s priority", issue.Title)) - expect.NotEmptyAndEqual(issue.Assignee, "Me", - fmt.Sprintf("%s assignee", issue.Title)) - expect.Equal(issue.Status, models.StatusInProgress, - fmt.Sprintf("%s status", issue.Title)) + fmt.Sprintf("%s status", issue.Title,)) } } } + for _, depIssue := range t.depIssues[1:] { + + deps, _ := t.app.Issues.GetDependencies(ctx, depIssue.ID) + expect.Equal(len(deps), 1, + fmt.Sprintf("%s - %d dependencies", depIssue.Title, len(deps))) + if len(deps) == 1 { + expect.Equal(deps[0].ID, t.depIssues[0].ID, + fmt.Sprintf("%s dependency", depIssue.Title)) + } + + } + + + + + if !expect.Valid() { + return expect.ValidationFeedback + } + return expect.Complete() }