Skip to content
Snippets Groups Projects
Commit 240c000f authored by Colin Jakob's avatar Colin Jakob
Browse files

Clone Requirement handles the cloning of a requirement to a different project

parent 31a1f9dc
Branches 17-exercise-3-scaling-mandatory-features
No related tags found
1 merge request!4merge dev to main
...@@ -194,3 +194,27 @@ func (s *ProjectService) SearchProjects(ctx context.Context, query string, userI ...@@ -194,3 +194,27 @@ func (s *ProjectService) SearchProjects(ctx context.Context, query string, userI
log.Printf("INFO: Search completed - found %d projects for query '%s'", len(projects), query) log.Printf("INFO: Search completed - found %d projects for query '%s'", len(projects), query)
return projects, nil return projects, nil
} }
// CloneRequirement handles the cloning of a requirement to a different project
func (s *ProjectService) CloneRequirement(ctx context.Context, sourceReqID primitive.ObjectID, targetProjectID string, newName string) error {
log.Printf("INFO: Cloning requirement %s to project %s with name '%s'", sourceReqID.Hex(), targetProjectID, newName)
// Validate that the target project exists
targetProject, err := s.repo.FindByProjectID(ctx, targetProjectID)
if err != nil {
log.Printf("ERROR: Target project '%s' not found: %v", targetProjectID, err)
return fmt.Errorf("target project not found")
}
log.Printf("DEBUG: Target project '%s' found, proceeding with clone", targetProject.Name)
// Delegate to repository for the actual cloning operation
err = s.repo.CloneRequirement(ctx, sourceReqID, targetProjectID, newName)
if err != nil {
log.Printf("ERROR: Failed to clone requirement %s: %v", sourceReqID.Hex(), err)
return err
}
log.Printf("INFO: Requirement cloned successfully to project '%s'", targetProject.Name)
return nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment