@@ -50,51 +50,56 @@ func LastUpdatedIssueInRepo(ctx context.Context, h *cayley.Handle, entity multip
50
50
51
51
type LoadTasksFilters struct {
52
52
Targets []multipmuri.Entity
53
+ TheWorld bool
53
54
WithClosed bool
54
55
WithoutIsolated bool
55
56
WithoutPRs bool
56
57
WithoutExternalDeps bool
57
58
}
58
59
59
60
func LoadTasks (h * cayley.Handle , schema * schema.Config , filters LoadTasksFilters , logger * zap.Logger ) (dvmodel.Tasks , error ) {
60
- if filters .Targets == nil || len (filters .Targets ) == 0 {
61
+ if ( filters .Targets == nil || len (filters .Targets ) == 0 ) && ! filters . TheWorld {
61
62
return nil , fmt .Errorf ("missing filter.targets" )
62
63
}
63
64
64
65
ctx := context .TODO ()
65
66
66
- // fetch and filter
67
+ // fetch targets
67
68
paths := []* path.Path {}
68
- for _ , target := range filters .Targets {
69
- // FIXME: handle different target types (for now only repo )
70
- p := path . StartPath ( h , quad . IRI ( target . String ())).
71
- In ().
72
- Has ( quad . IRI ( "rdf:type" ), quad . IRI ( "dv:Task" ) )
73
- kinds := [] quad.Value {
74
- quad . Int ( dvmodel . Task_Issue ),
75
- quad .Int ( dvmodel . Task_Milestone ),
76
- quad . Int ( dvmodel . Task_Epic ),
77
- quad . Int ( dvmodel . Task_Story ),
78
- quad . Int ( dvmodel . Task_Card ),
69
+ if filters .TheWorld {
70
+ paths = append ( paths , path . StartPath ( h ) )
71
+ } else {
72
+ for _ , target := range filters . Targets {
73
+ // FIXME: handle different target types (for now only repo )
74
+ p := path . StartPath ( h , quad .IRI ( target . String ())).
75
+ Both ().
76
+ Has ( quad .IRI ( "rdf:type" ), quad . IRI ( "dv:Task" ))
77
+
78
+ // FIXME: reverse depends/blocks
79
+ paths = append ( paths , p )
79
80
}
80
- // FIXME: one option per type
81
- if ! filters .WithoutPRs {
82
- kinds = append (kinds , quad .Int (dvmodel .Task_MergeRequest ))
83
- }
84
- p = p .Has (quad .IRI ("schema:kind" ), kinds ... )
85
- if ! filters .WithClosed {
86
- p = p .Has (quad .IRI ("schema:state" ), quad .Int (dvmodel .Task_Open ))
87
- }
88
- // FIXME: reverse depends/blocks
89
-
90
- paths = append (paths , p )
91
81
}
92
-
93
82
p := paths [0 ]
94
83
for _ , path := range paths [1 :] {
95
84
p = p .Or (path )
96
85
}
97
86
87
+ // filters
88
+ kinds := []quad.Value {
89
+ quad .Int (dvmodel .Task_Issue ),
90
+ quad .Int (dvmodel .Task_Milestone ),
91
+ quad .Int (dvmodel .Task_Epic ),
92
+ quad .Int (dvmodel .Task_Story ),
93
+ quad .Int (dvmodel .Task_Card ),
94
+ }
95
+ if ! filters .WithoutPRs {
96
+ kinds = append (kinds , quad .Int (dvmodel .Task_MergeRequest ))
97
+ }
98
+ p = p .Has (quad .IRI ("schema:kind" ), kinds ... )
99
+ if ! filters .WithClosed {
100
+ p = p .Has (quad .IRI ("schema:state" ), quad .Int (dvmodel .Task_Open ))
101
+ }
102
+
98
103
if ! filters .WithoutExternalDeps {
99
104
p = p .Or (p .Both (
100
105
quad .IRI ("isDependingOn" ),
0 commit comments