diff --git a/design/design.go b/design/design.go index 19bce998ec88c06dcd99234fa87b4ca34afb399f..f45c623c174bc345c7962ee523d1fefb796895fe 100644 --- a/design/design.go +++ b/design/design.go @@ -71,6 +71,25 @@ var _ = Service("taskList", func() { Response(StatusOK) }) }) + + Method("TaskListResult", func() { + Description("TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.") + Payload(TaskListResultRequest) + Result(TaskListStatus) + HTTP(func() { + GET("/v1/taskListResult/{taskListID}") + Response(StatusOK) + Response(StatusCreated, func() { + Tag("status", "created") + }) + Response(StatusAccepted, func() { + Tag("status", "pending") + }) + Response(StatusMultiStatus, func() { + Tag("status", "failed") + }) + }) + }) }) var _ = Service("health", func() { diff --git a/design/types.go b/design/types.go index 7178a145f82034751203139cd631fcca56bdbf0d..d8ee8780c205483ce9efa38dab5c5517c17cc5aa 100644 --- a/design/types.go +++ b/design/types.go @@ -33,3 +33,38 @@ var CreateTaskListResult = Type("CreateTaskListResult", func() { Field(1, "taskListID", String, "Unique taskList identifier.") Required("taskListID") }) + +var TaskListResultRequest = Type("TaskListResultRequest", func() { + Field(1, "taskListID", String, "Unique taskList identifier.") + Required("taskListID") +}) + +var TaskListStatus = Type("TaskListStatus", func() { + Field(1, "id", String, "Unique taskList identifier.", func() { + Example("9cc9f504-2b7f-4e24-ac59-653e9533840a") + }) + Field(2, "status", String, "Current status of the taskList", func() { + Example("done") + }) + Field(3, "groups", ArrayOf(GroupStatus), "Array of GroupStatus") + Required("id", "status") +}) + +var GroupStatus = Type("GroupStatus", func() { + Field(1, "id", String, "Unique group identifier.", func() { + Example("a7d1349d-34b5-4c65-b671-d1aa362fc446") + }) + Field(2, "status", String, "Current status of the group", func() { + Example("done") + }) + Field(3, "tasks", ArrayOf(TaskStatus), "Array of TaskStatus") +}) + +var TaskStatus = Type("TaskStatus", func() { + Field(1, "id", String, "Unique task identifier.", func() { + Example("d16996cd-1977-42a9-90b2-b4548a35c1b4") + }) + Field(2, "status", String, "Current status of the task", func() { + Example("done") + }) +}) diff --git a/gen/http/cli/task/cli.go b/gen/http/cli/task/cli.go index e125d9bae7407f0fabda3324cb9c3d1966b29ed4..6b3a3f3d5d37ba1cb804e2c2ac470f682bb05d76 100644 --- a/gen/http/cli/task/cli.go +++ b/gen/http/cli/task/cli.go @@ -27,15 +27,15 @@ import ( func UsageCommands() string { return `health (liveness|readiness) task (create|task-result) -task-list create +task-list (create|task-list-result) ` } // UsageExamples produces an example of a valid invocation of the CLI tool. func UsageExamples() string { return os.Args[0] + ` health liveness` + "\n" + - os.Args[0] + ` task create --body "Ipsam et est accusantium." --task-name "Corrupti quia autem dolorum sunt aperiam quaerat." --cache-namespace "Eveniet et eligendi sint quibusdam quia maxime." --cache-scope "Et ipsa voluptate."` + "\n" + - os.Args[0] + ` task-list create --body "Rerum quod error est esse nisi." --task-list-name "Sapiente et." --cache-namespace "Delectus natus eos." --cache-scope "Quae ut dolores ab."` + "\n" + + os.Args[0] + ` task create --body "Vel odio et doloribus est quod laborum." --task-name "Eveniet et eligendi sint quibusdam quia maxime." --cache-namespace "Et ipsa voluptate." --cache-scope "Quo qui fuga impedit eos fuga et."` + "\n" + + os.Args[0] + ` task-list create --body "Quaerat ut fugit voluptatem dolores deserunt in." --task-list-name "Delectus natus eos." --cache-namespace "Quae ut dolores ab." --cache-scope "Omnis commodi reiciendis eum non."` + "\n" + "" } @@ -73,6 +73,9 @@ func ParseEndpoint( taskListCreateTaskListNameFlag = taskListCreateFlags.String("task-list-name", "REQUIRED", "TaskList name.") taskListCreateCacheNamespaceFlag = taskListCreateFlags.String("cache-namespace", "", "") taskListCreateCacheScopeFlag = taskListCreateFlags.String("cache-scope", "", "") + + taskListTaskListResultFlags = flag.NewFlagSet("task-list-result", flag.ExitOnError) + taskListTaskListResultTaskListIDFlag = taskListTaskListResultFlags.String("task-list-id", "REQUIRED", "Unique taskList identifier.") ) healthFlags.Usage = healthUsage healthLivenessFlags.Usage = healthLivenessUsage @@ -84,6 +87,7 @@ func ParseEndpoint( taskListFlags.Usage = taskListUsage taskListCreateFlags.Usage = taskListCreateUsage + taskListTaskListResultFlags.Usage = taskListTaskListResultUsage if err := flag.CommandLine.Parse(os.Args[1:]); err != nil { return nil, nil, err @@ -146,6 +150,9 @@ func ParseEndpoint( case "create": epf = taskListCreateFlags + case "task-list-result": + epf = taskListTaskListResultFlags + } } @@ -194,6 +201,9 @@ func ParseEndpoint( case "create": endpoint = c.Create() data, err = tasklistc.BuildCreatePayload(*taskListCreateBodyFlag, *taskListCreateTaskListNameFlag, *taskListCreateCacheNamespaceFlag, *taskListCreateCacheScopeFlag) + case "task-list-result": + endpoint = c.TaskListResult() + data, err = tasklistc.BuildTaskListResultPayload(*taskListTaskListResultTaskListIDFlag) } } } @@ -262,7 +272,7 @@ Create a task and put it in a queue for execution. -cache-scope STRING: Example: - %[1]s task create --body "Ipsam et est accusantium." --task-name "Corrupti quia autem dolorum sunt aperiam quaerat." --cache-namespace "Eveniet et eligendi sint quibusdam quia maxime." --cache-scope "Et ipsa voluptate." + %[1]s task create --body "Vel odio et doloribus est quod laborum." --task-name "Eveniet et eligendi sint quibusdam quia maxime." --cache-namespace "Et ipsa voluptate." --cache-scope "Quo qui fuga impedit eos fuga et." `, os.Args[0]) } @@ -273,7 +283,7 @@ TaskResult retrieves task result from the Cache service. -task-id STRING: Unique task identifier. Example: - %[1]s task task-result --task-id "Excepturi aut consequatur animi rerum." + %[1]s task task-result --task-id "Dolores atque error ab." `, os.Args[0]) } @@ -285,7 +295,8 @@ Usage: %[1]s [globalflags] task-list COMMAND [flags] COMMAND: - create: Create a task list, corresponding groups and tasks and put them in respective queues for execution. + create: Create a task list and corresponding tasks and put them in respective queues for execution. + task-list-result: TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service. Additional help: %[1]s task-list COMMAND --help @@ -294,13 +305,24 @@ Additional help: func taskListCreateUsage() { fmt.Fprintf(os.Stderr, `%[1]s [flags] task-list create -body JSON -task-list-name STRING -cache-namespace STRING -cache-scope STRING -Create a task list, corresponding groups and tasks and put them in respective queues for execution. +Create a task list and corresponding tasks and put them in respective queues for execution. -body JSON: -task-list-name STRING: TaskList name. -cache-namespace STRING: -cache-scope STRING: Example: - %[1]s task-list create --body "Rerum quod error est esse nisi." --task-list-name "Sapiente et." --cache-namespace "Delectus natus eos." --cache-scope "Quae ut dolores ab." + %[1]s task-list create --body "Quaerat ut fugit voluptatem dolores deserunt in." --task-list-name "Delectus natus eos." --cache-namespace "Quae ut dolores ab." --cache-scope "Omnis commodi reiciendis eum non." +`, os.Args[0]) +} + +func taskListTaskListResultUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] task-list task-list-result -task-list-id STRING + +TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service. + -task-list-id STRING: Unique taskList identifier. + +Example: + %[1]s task-list task-list-result --task-list-id "Deserunt dolor et autem quidem fugiat sint." `, os.Args[0]) } diff --git a/gen/http/openapi.json b/gen/http/openapi.json index 13e4956be85c69bb6664de4204a7dfbcf60f9db0..43127d6b53da9be51a4b015bc4a72d551923e9f9 100644 --- a/gen/http/openapi.json +++ b/gen/http/openapi.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":""},"host":"localhost:8082","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for task execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskCreateResponseBody","required":["taskID"]}}},"schemes":["http"]}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list, corresponding groups and tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for taskList execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListCreateResponseBody","required":["taskListID"]}}},"schemes":["http"]}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"type":"string","format":"binary"}}},"schemes":["http"]}}},"definitions":{"TaskCreateResponseBody":{"title":"TaskCreateResponseBody","type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Et officiis aut."}},"example":{"taskID":"Atque veritatis."},"required":["taskID"]},"TaskListCreateResponseBody":{"title":"TaskListCreateResponseBody","type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Deserunt dolor et autem quidem fugiat sint."}},"example":{"taskListID":"Aut voluptas possimus quia aliquam sit."},"required":["taskListID"]}}} \ No newline at end of file +{"swagger":"2.0","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":""},"host":"localhost:8082","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}},"schemes":["http"]}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for task execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskCreateResponseBody","required":["taskID"]}}},"schemes":["http"]}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list and corresponding tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"type":"string"},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","required":false,"type":"string"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","required":false,"type":"string"},{"name":"any","in":"body","description":"Data contains JSON payload that will be used for taskList execution.","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListCreateResponseBody","required":["taskListID"]}}},"schemes":["http"]}},"/v1/taskListResult/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListResult taskList","description":"TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListResult","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/TaskListTaskListResultOKResponseBody","required":["id","status"]}},"201":{"description":"Created response.","schema":{"$ref":"#/definitions/TaskListTaskListResultCreatedResponseBody","required":["id","status"]}},"202":{"description":"Accepted response.","schema":{"$ref":"#/definitions/TaskListTaskListResultAcceptedResponseBody","required":["id","status"]}},"207":{"description":"Multi-Status response.","schema":{"$ref":"#/definitions/TaskListTaskListResultMultiStatusResponseBody","required":["id","status"]}}},"schemes":["http"]}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"type":"string","format":"binary"}}},"schemes":["http"]}}},"definitions":{"GroupStatusResponseBody":{"title":"GroupStatusResponseBody","type":"object","properties":{"id":{"type":"string","description":"Unique group identifier.","example":"a7d1349d-34b5-4c65-b671-d1aa362fc446"},"status":{"type":"string","description":"Current status of the group","example":"done"},"tasks":{"type":"array","items":{"$ref":"#/definitions/TaskStatusResponseBody"},"description":"Array of TaskStatus","example":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"example":{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"TaskCreateResponseBody":{"title":"TaskCreateResponseBody","type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Sit asperiores."}},"example":{"taskID":"Iste suscipit exercitationem facilis distinctio asperiores ut."},"required":["taskID"]},"TaskListCreateResponseBody":{"title":"TaskListCreateResponseBody","type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Ducimus velit."}},"example":{"taskListID":"Et occaecati placeat."},"required":["taskListID"]},"TaskListTaskListResultAcceptedResponseBody":{"title":"TaskListTaskListResultAcceptedResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskListTaskListResultCreatedResponseBody":{"title":"TaskListTaskListResultCreatedResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskListTaskListResultMultiStatusResponseBody":{"title":"TaskListTaskListResultMultiStatusResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskListTaskListResultOKResponseBody":{"title":"TaskListTaskListResultOKResponseBody","type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/definitions/GroupStatusResponseBody"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskStatusResponseBody":{"title":"TaskStatusResponseBody","type":"object","properties":{"id":{"type":"string","description":"Unique task identifier.","example":"d16996cd-1977-42a9-90b2-b4548a35c1b4"},"status":{"type":"string","description":"Current status of the task","example":"done"}},"example":{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}}}} \ No newline at end of file diff --git a/gen/http/openapi.yaml b/gen/http/openapi.yaml index b9008d5a089c97a647cc5fb22c831bd7c86a9d92..2a2676a5ee016aff4baa7de4b048349146d199a9 100644 --- a/gen/http/openapi.yaml +++ b/gen/http/openapi.yaml @@ -79,8 +79,8 @@ paths: tags: - taskList summary: Create taskList - description: Create a task list, corresponding groups and tasks and put them - in respective queues for execution. + description: Create a task list and corresponding tasks and put them in respective + queues for execution. operationId: taskList#Create parameters: - name: taskListName @@ -114,6 +114,51 @@ paths: - taskListID schemes: - http + /v1/taskListResult/{taskListID}: + get: + tags: + - taskList + summary: TaskListResult taskList + description: TaskListResult retrieves a taskList result containing all tasks' + unique IDs and statuses from the Cache service. + operationId: taskList#TaskListResult + parameters: + - name: taskListID + in: path + description: Unique taskList identifier. + required: true + type: string + responses: + "200": + description: OK response. + schema: + $ref: '#/definitions/TaskListTaskListResultOKResponseBody' + required: + - id + - status + "201": + description: Created response. + schema: + $ref: '#/definitions/TaskListTaskListResultCreatedResponseBody' + required: + - id + - status + "202": + description: Accepted response. + schema: + $ref: '#/definitions/TaskListTaskListResultAcceptedResponseBody' + required: + - id + - status + "207": + description: Multi-Status response. + schema: + $ref: '#/definitions/TaskListTaskListResultMultiStatusResponseBody' + required: + - id + - status + schemes: + - http /v1/taskResult/{taskID}: get: tags: @@ -136,6 +181,40 @@ paths: schemes: - http definitions: + GroupStatusResponseBody: + title: GroupStatusResponseBody + type: object + properties: + id: + type: string + description: Unique group identifier. + example: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: + type: string + description: Current status of the group + example: done + tasks: + type: array + items: + $ref: '#/definitions/TaskStatusResponseBody' + description: Array of TaskStatus + example: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + example: + id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done TaskCreateResponseBody: title: TaskCreateResponseBody type: object @@ -143,9 +222,9 @@ definitions: taskID: type: string description: Unique task identifier. - example: Et officiis aut. + example: Sit asperiores. example: - taskID: Atque veritatis. + taskID: Iste suscipit exercitationem facilis distinctio asperiores ut. required: - taskID TaskListCreateResponseBody: @@ -155,8 +234,303 @@ definitions: taskListID: type: string description: Unique taskList identifier. - example: Deserunt dolor et autem quidem fugiat sint. + example: Ducimus velit. example: - taskListID: Aut voluptas possimus quia aliquam sit. + taskListID: Et occaecati placeat. required: - taskListID + TaskListTaskListResultAcceptedResponseBody: + title: TaskListTaskListResultAcceptedResponseBody + type: object + properties: + groups: + type: array + items: + $ref: '#/definitions/GroupStatusResponseBody' + description: Array of GroupStatus + example: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: + type: string + description: Unique taskList identifier. + example: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: + type: string + description: Current status of the taskList + example: done + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + required: + - id + - status + TaskListTaskListResultCreatedResponseBody: + title: TaskListTaskListResultCreatedResponseBody + type: object + properties: + groups: + type: array + items: + $ref: '#/definitions/GroupStatusResponseBody' + description: Array of GroupStatus + example: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: + type: string + description: Unique taskList identifier. + example: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: + type: string + description: Current status of the taskList + example: done + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + required: + - id + - status + TaskListTaskListResultMultiStatusResponseBody: + title: TaskListTaskListResultMultiStatusResponseBody + type: object + properties: + groups: + type: array + items: + $ref: '#/definitions/GroupStatusResponseBody' + description: Array of GroupStatus + example: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: + type: string + description: Unique taskList identifier. + example: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: + type: string + description: Current status of the taskList + example: done + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + required: + - id + - status + TaskListTaskListResultOKResponseBody: + title: TaskListTaskListResultOKResponseBody + type: object + properties: + groups: + type: array + items: + $ref: '#/definitions/GroupStatusResponseBody' + description: Array of GroupStatus + example: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: + type: string + description: Unique taskList identifier. + example: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: + type: string + description: Current status of the taskList + example: done + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + required: + - id + - status + TaskStatusResponseBody: + title: TaskStatusResponseBody + type: object + properties: + id: + type: string + description: Unique task identifier. + example: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: + type: string + description: Current status of the task + example: done + example: + id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done diff --git a/gen/http/openapi3.json b/gen/http/openapi3.json index 4a39db1b50f4e6ac9185165a43d3ae6c3b14c9f6..5ab27ada65fefff93d33a6ca0cbc68755f771907 100644 --- a/gen/http/openapi3.json +++ b/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":"1.0"},"servers":[{"url":"http://localhost:8082","description":"Task Server"}],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}}}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"schema":{"type":"string","description":"Task name.","example":"Voluptatem iure qui facilis aut."},"example":"Excepturi non."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for task execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for task execution.","example":"Impedit iste suscipit.","format":"binary"},"example":"Excepturi in ex ratione."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskResult"},"example":{"taskID":"Vel odio et doloribus est quod laborum."}}}}}}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list, corresponding groups and tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"schema":{"type":"string","description":"TaskList name.","example":"Incidunt autem eaque."},"example":"Fugit ut eius sint earum."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for taskList execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for taskList execution.","example":"Reiciendis numquam.","format":"binary"},"example":"At consequatur nulla praesentium totam dolores voluptas."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskListResult"},"example":{"taskListID":"Quaerat ut fugit voluptatem dolores deserunt in."}}}}}}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"schema":{"type":"string","description":"Unique task identifier.","example":"Ut et est aut quae magnam."},"example":"Amet sapiente qui non."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Placeat molestias praesentium necessitatibus sed.","format":"binary"},"example":"Sint nulla."}}}}}}},"components":{"schemas":{"CreateTaskListResult":{"type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Doloribus ullam voluptas quos aut tempore."}},"example":{"taskListID":"Porro perspiciatis qui vitae totam eligendi officiis."},"required":["taskListID"]},"CreateTaskResult":{"type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Facilis distinctio asperiores ut architecto ducimus."}},"example":{"taskID":"Omnis et."},"required":["taskID"]}}},"tags":[{"name":"health","description":"Health service provides health check endpoints."},{"name":"task","description":"Task service provides endpoints to work with tasks."},{"name":"taskList","description":"TaskList service provides endpoints to work with task lists."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Task Service","description":"The task service is executing tasks created from policies.","version":"1.0"},"servers":[{"url":"http://localhost:8082","description":"Task Server"}],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}}}},"/v1/task/{taskName}":{"post":{"tags":["task"],"summary":"Create task","description":"Create a task and put it in a queue for execution.","operationId":"task#Create","parameters":[{"name":"taskName","in":"path","description":"Task name.","required":true,"schema":{"type":"string","description":"Task name.","example":"Voluptas laudantium incidunt autem eaque."},"example":"Fugit ut eius sint earum."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for task execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for task execution.","example":"Quos aut tempore enim porro.","format":"binary"},"example":"Consequatur nulla praesentium totam."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskResult"},"example":{"taskID":"Harum aut autem aliquam dolorem non soluta."}}}}}}},"/v1/taskList/{taskListName}":{"post":{"tags":["taskList"],"summary":"Create taskList","description":"Create a task list and corresponding tasks and put them in respective queues for execution.","operationId":"taskList#Create","parameters":[{"name":"taskListName","in":"path","description":"TaskList name.","required":true,"schema":{"type":"string","description":"TaskList name.","example":"Earum laborum accusamus id nihil."},"example":"Est eveniet dolores."},{"name":"x-cache-namespace","in":"header","description":"Cache key namespace","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key namespace","example":"login"},"example":"login"},{"name":"x-cache-scope","in":"header","description":"Cache key scope","allowEmptyValue":true,"schema":{"type":"string","description":"Cache key scope","example":"user"},"example":"user"}],"requestBody":{"description":"Data contains JSON payload that will be used for taskList execution.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Data contains JSON payload that will be used for taskList execution.","example":"Excepturi non.","format":"binary"},"example":"Laboriosam cumque."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskListResult"},"example":{"taskListID":"Et officiis aut."}}}}}}},"/v1/taskListResult/{taskListID}":{"get":{"tags":["taskList"],"summary":"TaskListResult taskList","description":"TaskListResult retrieves a taskList result containing all tasks' unique IDs and statuses from the Cache service.","operationId":"taskList#TaskListResult","parameters":[{"name":"taskListID","in":"path","description":"Unique taskList identifier.","required":true,"schema":{"type":"string","description":"Unique taskList identifier.","example":"Omnis optio magni sunt aliquid et."},"example":"Dignissimos doloribus rerum occaecati quia ut."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}},"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}},"202":{"description":"Accepted response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}},"207":{"description":"Multi-Status response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskListStatus"},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"}}}}}}},"/v1/taskResult/{taskID}":{"get":{"tags":["task"],"summary":"TaskResult task","description":"TaskResult retrieves task result from the Cache service.","operationId":"task#TaskResult","parameters":[{"name":"taskID","in":"path","description":"Unique task identifier.","required":true,"schema":{"type":"string","description":"Unique task identifier.","example":"Doloremque earum aliquid ipsa."},"example":"Voluptas odit voluptate nobis nam quia quae."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Voluptatem iure qui facilis aut.","format":"binary"},"example":"Maxime facilis."}}}}}}},"components":{"schemas":{"CreateTaskListResult":{"type":"object","properties":{"taskListID":{"type":"string","description":"Unique taskList identifier.","example":"Ut et est aut quae magnam."}},"example":{"taskListID":"Amet sapiente qui non."},"required":["taskListID"]},"CreateTaskResult":{"type":"object","properties":{"taskID":{"type":"string","description":"Unique task identifier.","example":"Qui vitae."}},"example":{"taskID":"Eligendi officiis repudiandae excepturi in ex ratione."},"required":["taskID"]},"GroupStatus":{"type":"object","properties":{"id":{"type":"string","description":"Unique group identifier.","example":"a7d1349d-34b5-4c65-b671-d1aa362fc446"},"status":{"type":"string","description":"Current status of the group","example":"done"},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/TaskStatus"},"description":"Array of TaskStatus","example":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"example":{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}},"TaskListStatus":{"type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupStatus"},"description":"Array of GroupStatus","example":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}]},"id":{"type":"string","description":"Unique taskList identifier.","example":"9cc9f504-2b7f-4e24-ac59-653e9533840a"},"status":{"type":"string","description":"Current status of the taskList","example":"done"}},"example":{"groups":[{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]},{"id":"a7d1349d-34b5-4c65-b671-d1aa362fc446","status":"done","tasks":[{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"},{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}]}],"id":"9cc9f504-2b7f-4e24-ac59-653e9533840a","status":"done"},"required":["id","status"]},"TaskStatus":{"type":"object","properties":{"id":{"type":"string","description":"Unique task identifier.","example":"d16996cd-1977-42a9-90b2-b4548a35c1b4"},"status":{"type":"string","description":"Current status of the task","example":"done"}},"example":{"id":"d16996cd-1977-42a9-90b2-b4548a35c1b4","status":"done"}}}},"tags":[{"name":"health","description":"Health service provides health check endpoints."},{"name":"task","description":"Task service provides endpoints to work with tasks."},{"name":"taskList","description":"TaskList service provides endpoints to work with task lists."}]} \ No newline at end of file diff --git a/gen/http/openapi3.yaml b/gen/http/openapi3.yaml index 3b234d0b2694c25ae7b41a466c4a52329a6b48d7..5f2410bff1140b90b9871ea7af5fd284be6f8cf1 100644 --- a/gen/http/openapi3.yaml +++ b/gen/http/openapi3.yaml @@ -40,8 +40,8 @@ paths: schema: type: string description: Task name. - example: Voluptatem iure qui facilis aut. - example: Excepturi non. + example: Voluptas laudantium incidunt autem eaque. + example: Fugit ut eius sint earum. - name: x-cache-namespace in: header description: Cache key namespace @@ -68,9 +68,9 @@ paths: schema: type: string description: Data contains JSON payload that will be used for task execution. - example: Impedit iste suscipit. + example: Quos aut tempore enim porro. format: binary - example: Excepturi in ex ratione. + example: Consequatur nulla praesentium totam. responses: "200": description: OK response. @@ -79,14 +79,14 @@ paths: schema: $ref: '#/components/schemas/CreateTaskResult' example: - taskID: Vel odio et doloribus est quod laborum. + taskID: Harum aut autem aliquam dolorem non soluta. /v1/taskList/{taskListName}: post: tags: - taskList summary: Create taskList - description: Create a task list, corresponding groups and tasks and put them - in respective queues for execution. + description: Create a task list and corresponding tasks and put them in respective + queues for execution. operationId: taskList#Create parameters: - name: taskListName @@ -96,8 +96,8 @@ paths: schema: type: string description: TaskList name. - example: Incidunt autem eaque. - example: Fugit ut eius sint earum. + example: Earum laborum accusamus id nihil. + example: Est eveniet dolores. - name: x-cache-namespace in: header description: Cache key namespace @@ -125,9 +125,9 @@ paths: type: string description: Data contains JSON payload that will be used for taskList execution. - example: Reiciendis numquam. + example: Excepturi non. format: binary - example: At consequatur nulla praesentium totam dolores voluptas. + example: Laboriosam cumque. responses: "200": description: OK response. @@ -136,7 +136,174 @@ paths: schema: $ref: '#/components/schemas/CreateTaskListResult' example: - taskListID: Quaerat ut fugit voluptatem dolores deserunt in. + taskListID: Et officiis aut. + /v1/taskListResult/{taskListID}: + get: + tags: + - taskList + summary: TaskListResult taskList + description: TaskListResult retrieves a taskList result containing all tasks' + unique IDs and statuses from the Cache service. + operationId: taskList#TaskListResult + parameters: + - name: taskListID + in: path + description: Unique taskList identifier. + required: true + schema: + type: string + description: Unique taskList identifier. + example: Omnis optio magni sunt aliquid et. + example: Dignissimos doloribus rerum occaecati quia ut. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/TaskListStatus' + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + "201": + description: Created response. + content: + application/json: + schema: + $ref: '#/components/schemas/TaskListStatus' + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + "202": + description: Accepted response. + content: + application/json: + schema: + $ref: '#/components/schemas/TaskListStatus' + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + "207": + description: Multi-Status response. + content: + application/json: + schema: + $ref: '#/components/schemas/TaskListStatus' + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done /v1/taskResult/{taskID}: get: tags: @@ -152,8 +319,8 @@ paths: schema: type: string description: Unique task identifier. - example: Ut et est aut quae magnam. - example: Amet sapiente qui non. + example: Doloremque earum aliquid ipsa. + example: Voluptas odit voluptate nobis nam quia quae. responses: "200": description: OK response. @@ -161,9 +328,9 @@ paths: application/json: schema: type: string - example: Placeat molestias praesentium necessitatibus sed. + example: Voluptatem iure qui facilis aut. format: binary - example: Sint nulla. + example: Maxime facilis. components: schemas: CreateTaskListResult: @@ -172,9 +339,9 @@ components: taskListID: type: string description: Unique taskList identifier. - example: Doloribus ullam voluptas quos aut tempore. + example: Ut et est aut quae magnam. example: - taskListID: Porro perspiciatis qui vitae totam eligendi officiis. + taskListID: Amet sapiente qui non. required: - taskListID CreateTaskResult: @@ -183,11 +350,147 @@ components: taskID: type: string description: Unique task identifier. - example: Facilis distinctio asperiores ut architecto ducimus. + example: Qui vitae. example: - taskID: Omnis et. + taskID: Eligendi officiis repudiandae excepturi in ex ratione. required: - taskID + GroupStatus: + type: object + properties: + id: + type: string + description: Unique group identifier. + example: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: + type: string + description: Current status of the group + example: done + tasks: + type: array + items: + $ref: '#/components/schemas/TaskStatus' + description: Array of TaskStatus + example: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + example: + id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + TaskListStatus: + type: object + properties: + groups: + type: array + items: + $ref: '#/components/schemas/GroupStatus' + description: Array of GroupStatus + example: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: + type: string + description: Unique taskList identifier. + example: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: + type: string + description: Current status of the taskList + example: done + example: + groups: + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: a7d1349d-34b5-4c65-b671-d1aa362fc446 + status: done + tasks: + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + - id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done + id: 9cc9f504-2b7f-4e24-ac59-653e9533840a + status: done + required: + - id + - status + TaskStatus: + type: object + properties: + id: + type: string + description: Unique task identifier. + example: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: + type: string + description: Current status of the task + example: done + example: + id: d16996cd-1977-42a9-90b2-b4548a35c1b4 + status: done tags: - name: health description: Health service provides health check endpoints. diff --git a/gen/http/task/client/cli.go b/gen/http/task/client/cli.go index 3080e4ebc945b6f4f29af532b072a18c0ad3094c..bf05073b6f41fa01db203999926e83d941fbe037 100644 --- a/gen/http/task/client/cli.go +++ b/gen/http/task/client/cli.go @@ -22,7 +22,7 @@ func BuildCreatePayload(taskCreateBody string, taskCreateTaskName string, taskCr { err = json.Unmarshal([]byte(taskCreateBody), &body) if err != nil { - return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Ipsam et est accusantium.\"") + return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Vel odio et doloribus est quod laborum.\"") } } var taskName string diff --git a/gen/http/task_list/client/cli.go b/gen/http/task_list/client/cli.go index a46f7e6b65abf426b31ebafbdd65df0c52b216a8..b3fea488aa37bcc93f8967c8c44a776705ab9787 100644 --- a/gen/http/task_list/client/cli.go +++ b/gen/http/task_list/client/cli.go @@ -22,7 +22,7 @@ func BuildCreatePayload(taskListCreateBody string, taskListCreateTaskListName st { err = json.Unmarshal([]byte(taskListCreateBody), &body) if err != nil { - return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Rerum quod error est esse nisi.\"") + return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Quaerat ut fugit voluptatem dolores deserunt in.\"") } } var taskListName string @@ -51,3 +51,16 @@ func BuildCreatePayload(taskListCreateBody string, taskListCreateTaskListName st return res, nil } + +// BuildTaskListResultPayload builds the payload for the taskList +// TaskListResult endpoint from CLI flags. +func BuildTaskListResultPayload(taskListTaskListResultTaskListID string) (*tasklist.TaskListResultRequest, error) { + var taskListID string + { + taskListID = taskListTaskListResultTaskListID + } + v := &tasklist.TaskListResultRequest{} + v.TaskListID = taskListID + + return v, nil +} diff --git a/gen/http/task_list/client/client.go b/gen/http/task_list/client/client.go index 7beb029b37d637bc6fc7ca2249ee7a84e2d100fe..85ce0ec093f453b75b89dbc8f0f51cc0a91893ad 100644 --- a/gen/http/task_list/client/client.go +++ b/gen/http/task_list/client/client.go @@ -20,6 +20,10 @@ type Client struct { // Create Doer is the HTTP client used to make requests to the Create endpoint. CreateDoer goahttp.Doer + // TaskListResult Doer is the HTTP client used to make requests to the + // TaskListResult endpoint. + TaskListResultDoer goahttp.Doer + // RestoreResponseBody controls whether the response bodies are reset after // decoding so they can be read again. RestoreResponseBody bool @@ -41,6 +45,7 @@ func NewClient( ) *Client { return &Client{ CreateDoer: doer, + TaskListResultDoer: doer, RestoreResponseBody: restoreBody, scheme: scheme, host: host, @@ -72,3 +77,22 @@ func (c *Client) Create() goa.Endpoint { return decodeResponse(resp) } } + +// TaskListResult returns an endpoint that makes HTTP requests to the taskList +// service TaskListResult server. +func (c *Client) TaskListResult() goa.Endpoint { + var ( + decodeResponse = DecodeTaskListResultResponse(c.decoder, c.RestoreResponseBody) + ) + return func(ctx context.Context, v interface{}) (interface{}, error) { + req, err := c.BuildTaskListResultRequest(ctx, v) + if err != nil { + return nil, err + } + resp, err := c.TaskListResultDoer.Do(req) + if err != nil { + return nil, goahttp.ErrRequestError("taskList", "TaskListResult", err) + } + return decodeResponse(resp) + } +} diff --git a/gen/http/task_list/client/encode_decode.go b/gen/http/task_list/client/encode_decode.go index a8c5892c07ad6acdd709ff1f6875b1138eba762a..039233fa76cca534b124596950649d188223c455 100644 --- a/gen/http/task_list/client/encode_decode.go +++ b/gen/http/task_list/client/encode_decode.go @@ -106,3 +106,150 @@ func DecodeCreateResponse(decoder func(*http.Response) goahttp.Decoder, restoreB } } } + +// BuildTaskListResultRequest instantiates a HTTP request object with method +// and path set to call the "taskList" service "TaskListResult" endpoint +func (c *Client) BuildTaskListResultRequest(ctx context.Context, v interface{}) (*http.Request, error) { + var ( + taskListID string + ) + { + p, ok := v.(*tasklist.TaskListResultRequest) + if !ok { + return nil, goahttp.ErrInvalidType("taskList", "TaskListResult", "*tasklist.TaskListResultRequest", v) + } + taskListID = p.TaskListID + } + u := &url.URL{Scheme: c.scheme, Host: c.host, Path: TaskListResultTaskListPath(taskListID)} + req, err := http.NewRequest("GET", u.String(), nil) + if err != nil { + return nil, goahttp.ErrInvalidURL("taskList", "TaskListResult", u.String(), err) + } + if ctx != nil { + req = req.WithContext(ctx) + } + + return req, nil +} + +// DecodeTaskListResultResponse returns a decoder for responses returned by the +// taskList TaskListResult endpoint. restoreBody controls whether the response +// body should be restored after having been read. +func DecodeTaskListResultResponse(decoder func(*http.Response) goahttp.Decoder, restoreBody bool) func(*http.Response) (interface{}, error) { + return func(resp *http.Response) (interface{}, error) { + if restoreBody { + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + resp.Body = ioutil.NopCloser(bytes.NewBuffer(b)) + defer func() { + resp.Body = ioutil.NopCloser(bytes.NewBuffer(b)) + }() + } else { + defer resp.Body.Close() + } + switch resp.StatusCode { + case http.StatusMultiStatus: + var ( + body TaskListResultMultiStatusResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err) + } + err = ValidateTaskListResultMultiStatusResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err) + } + res := NewTaskListResultTaskListStatusMultiStatus(&body) + res.Status = "failed" + return res, nil + case http.StatusCreated: + var ( + body TaskListResultCreatedResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err) + } + err = ValidateTaskListResultCreatedResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err) + } + res := NewTaskListResultTaskListStatusCreated(&body) + res.Status = "created" + return res, nil + case http.StatusAccepted: + var ( + body TaskListResultAcceptedResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err) + } + err = ValidateTaskListResultAcceptedResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err) + } + res := NewTaskListResultTaskListStatusAccepted(&body) + res.Status = "pending" + return res, nil + case http.StatusOK: + var ( + body TaskListResultOKResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("taskList", "TaskListResult", err) + } + err = ValidateTaskListResultOKResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("taskList", "TaskListResult", err) + } + res := NewTaskListResultTaskListStatusOK(&body) + return res, nil + default: + body, _ := ioutil.ReadAll(resp.Body) + return nil, goahttp.ErrInvalidResponse("taskList", "TaskListResult", resp.StatusCode, string(body)) + } + } +} + +// unmarshalGroupStatusResponseBodyToTasklistGroupStatus builds a value of type +// *tasklist.GroupStatus from a value of type *GroupStatusResponseBody. +func unmarshalGroupStatusResponseBodyToTasklistGroupStatus(v *GroupStatusResponseBody) *tasklist.GroupStatus { + if v == nil { + return nil + } + res := &tasklist.GroupStatus{ + ID: v.ID, + Status: v.Status, + } + if v.Tasks != nil { + res.Tasks = make([]*tasklist.TaskStatus, len(v.Tasks)) + for i, val := range v.Tasks { + res.Tasks[i] = unmarshalTaskStatusResponseBodyToTasklistTaskStatus(val) + } + } + + return res +} + +// unmarshalTaskStatusResponseBodyToTasklistTaskStatus builds a value of type +// *tasklist.TaskStatus from a value of type *TaskStatusResponseBody. +func unmarshalTaskStatusResponseBodyToTasklistTaskStatus(v *TaskStatusResponseBody) *tasklist.TaskStatus { + if v == nil { + return nil + } + res := &tasklist.TaskStatus{ + ID: v.ID, + Status: v.Status, + } + + return res +} diff --git a/gen/http/task_list/client/paths.go b/gen/http/task_list/client/paths.go index ce764600818ffe4a5a0df13ee8cdd75e3db92428..ffe9998cace94691d4b97e2d7c5c8debd708cc1e 100644 --- a/gen/http/task_list/client/paths.go +++ b/gen/http/task_list/client/paths.go @@ -15,3 +15,8 @@ import ( func CreateTaskListPath(taskListName string) string { return fmt.Sprintf("/v1/taskList/%v", taskListName) } + +// TaskListResultTaskListPath returns the URL path to the taskList service TaskListResult HTTP endpoint. +func TaskListResultTaskListPath(taskListID string) string { + return fmt.Sprintf("/v1/taskListResult/%v", taskListID) +} diff --git a/gen/http/task_list/client/types.go b/gen/http/task_list/client/types.go index 902273026c2e1b2237fc0b70252f96669b7e42c1..0aac928cea6267732c3a6ffb0cf3d481e38cdcfb 100644 --- a/gen/http/task_list/client/types.go +++ b/gen/http/task_list/client/types.go @@ -19,6 +19,68 @@ type CreateResponseBody struct { TaskListID *string `form:"taskListID,omitempty" json:"taskListID,omitempty" xml:"taskListID,omitempty"` } +// TaskListResultMultiStatusResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultMultiStatusResponseBody struct { + // Unique taskList identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the taskList + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// TaskListResultCreatedResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultCreatedResponseBody struct { + // Unique taskList identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the taskList + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// TaskListResultAcceptedResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultAcceptedResponseBody struct { + // Unique taskList identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the taskList + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// TaskListResultOKResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultOKResponseBody struct { + // Unique taskList identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the taskList + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// GroupStatusResponseBody is used to define fields on response body types. +type GroupStatusResponseBody struct { + // Unique group identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the group + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` + // Array of TaskStatus + Tasks []*TaskStatusResponseBody `form:"tasks,omitempty" json:"tasks,omitempty" xml:"tasks,omitempty"` +} + +// TaskStatusResponseBody is used to define fields on response body types. +type TaskStatusResponseBody struct { + // Unique task identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the task + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` +} + // NewCreateTaskListResultOK builds a "taskList" service "Create" endpoint // result from a HTTP "OK" response. func NewCreateTaskListResultOK(body *CreateResponseBody) *tasklist.CreateTaskListResult { @@ -29,6 +91,74 @@ func NewCreateTaskListResultOK(body *CreateResponseBody) *tasklist.CreateTaskLis return v } +// NewTaskListResultTaskListStatusMultiStatus builds a "taskList" service +// "TaskListResult" endpoint result from a HTTP "MultiStatus" response. +func NewTaskListResultTaskListStatusMultiStatus(body *TaskListResultMultiStatusResponseBody) *tasklist.TaskListStatus { + v := &tasklist.TaskListStatus{ + ID: *body.ID, + Status: *body.Status, + } + if body.Groups != nil { + v.Groups = make([]*tasklist.GroupStatus, len(body.Groups)) + for i, val := range body.Groups { + v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val) + } + } + + return v +} + +// NewTaskListResultTaskListStatusCreated builds a "taskList" service +// "TaskListResult" endpoint result from a HTTP "Created" response. +func NewTaskListResultTaskListStatusCreated(body *TaskListResultCreatedResponseBody) *tasklist.TaskListStatus { + v := &tasklist.TaskListStatus{ + ID: *body.ID, + Status: *body.Status, + } + if body.Groups != nil { + v.Groups = make([]*tasklist.GroupStatus, len(body.Groups)) + for i, val := range body.Groups { + v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val) + } + } + + return v +} + +// NewTaskListResultTaskListStatusAccepted builds a "taskList" service +// "TaskListResult" endpoint result from a HTTP "Accepted" response. +func NewTaskListResultTaskListStatusAccepted(body *TaskListResultAcceptedResponseBody) *tasklist.TaskListStatus { + v := &tasklist.TaskListStatus{ + ID: *body.ID, + Status: *body.Status, + } + if body.Groups != nil { + v.Groups = make([]*tasklist.GroupStatus, len(body.Groups)) + for i, val := range body.Groups { + v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val) + } + } + + return v +} + +// NewTaskListResultTaskListStatusOK builds a "taskList" service +// "TaskListResult" endpoint result from a HTTP "OK" response. +func NewTaskListResultTaskListStatusOK(body *TaskListResultOKResponseBody) *tasklist.TaskListStatus { + v := &tasklist.TaskListStatus{ + ID: *body.ID, + Status: *body.Status, + } + if body.Groups != nil { + v.Groups = make([]*tasklist.GroupStatus, len(body.Groups)) + for i, val := range body.Groups { + v.Groups[i] = unmarshalGroupStatusResponseBodyToTasklistGroupStatus(val) + } + } + + return v +} + // ValidateCreateResponseBody runs the validations defined on CreateResponseBody func ValidateCreateResponseBody(body *CreateResponseBody) (err error) { if body.TaskListID == nil { @@ -36,3 +166,51 @@ func ValidateCreateResponseBody(body *CreateResponseBody) (err error) { } return } + +// ValidateTaskListResultMultiStatusResponseBody runs the validations defined +// on TaskListResultMulti-StatusResponseBody +func ValidateTaskListResultMultiStatusResponseBody(body *TaskListResultMultiStatusResponseBody) (err error) { + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Status == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("status", "body")) + } + return +} + +// ValidateTaskListResultCreatedResponseBody runs the validations defined on +// TaskListResultCreatedResponseBody +func ValidateTaskListResultCreatedResponseBody(body *TaskListResultCreatedResponseBody) (err error) { + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Status == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("status", "body")) + } + return +} + +// ValidateTaskListResultAcceptedResponseBody runs the validations defined on +// TaskListResultAcceptedResponseBody +func ValidateTaskListResultAcceptedResponseBody(body *TaskListResultAcceptedResponseBody) (err error) { + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Status == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("status", "body")) + } + return +} + +// ValidateTaskListResultOKResponseBody runs the validations defined on +// TaskListResultOKResponseBody +func ValidateTaskListResultOKResponseBody(body *TaskListResultOKResponseBody) (err error) { + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Status == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("status", "body")) + } + return +} diff --git a/gen/http/task_list/server/encode_decode.go b/gen/http/task_list/server/encode_decode.go index be27fbb71c3e3e8a5cfc1859b3aabb3352be4fab..1766a79f08acf5abe52d05512c8746c6f98b2ec4 100644 --- a/gen/http/task_list/server/encode_decode.go +++ b/gen/http/task_list/server/encode_decode.go @@ -66,3 +66,83 @@ func DecodeCreateRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp. return payload, nil } } + +// EncodeTaskListResultResponse returns an encoder for responses returned by +// the taskList TaskListResult endpoint. +func EncodeTaskListResultResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, interface{}) error { + return func(ctx context.Context, w http.ResponseWriter, v interface{}) error { + res, _ := v.(*tasklist.TaskListStatus) + if res.Status == "failed" { + enc := encoder(ctx, w) + body := NewTaskListResultMultiStatusResponseBody(res) + w.WriteHeader(http.StatusMultiStatus) + return enc.Encode(body) + } + if res.Status == "created" { + enc := encoder(ctx, w) + body := NewTaskListResultCreatedResponseBody(res) + w.WriteHeader(http.StatusCreated) + return enc.Encode(body) + } + if res.Status == "pending" { + enc := encoder(ctx, w) + body := NewTaskListResultAcceptedResponseBody(res) + w.WriteHeader(http.StatusAccepted) + return enc.Encode(body) + } + enc := encoder(ctx, w) + body := NewTaskListResultOKResponseBody(res) + w.WriteHeader(http.StatusOK) + return enc.Encode(body) + } +} + +// DecodeTaskListResultRequest returns a decoder for requests sent to the +// taskList TaskListResult endpoint. +func DecodeTaskListResultRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (interface{}, error) { + return func(r *http.Request) (interface{}, error) { + var ( + taskListID string + + params = mux.Vars(r) + ) + taskListID = params["taskListID"] + payload := NewTaskListResultRequest(taskListID) + + return payload, nil + } +} + +// marshalTasklistGroupStatusToGroupStatusResponseBody builds a value of type +// *GroupStatusResponseBody from a value of type *tasklist.GroupStatus. +func marshalTasklistGroupStatusToGroupStatusResponseBody(v *tasklist.GroupStatus) *GroupStatusResponseBody { + if v == nil { + return nil + } + res := &GroupStatusResponseBody{ + ID: v.ID, + Status: v.Status, + } + if v.Tasks != nil { + res.Tasks = make([]*TaskStatusResponseBody, len(v.Tasks)) + for i, val := range v.Tasks { + res.Tasks[i] = marshalTasklistTaskStatusToTaskStatusResponseBody(val) + } + } + + return res +} + +// marshalTasklistTaskStatusToTaskStatusResponseBody builds a value of type +// *TaskStatusResponseBody from a value of type *tasklist.TaskStatus. +func marshalTasklistTaskStatusToTaskStatusResponseBody(v *tasklist.TaskStatus) *TaskStatusResponseBody { + if v == nil { + return nil + } + res := &TaskStatusResponseBody{ + ID: v.ID, + Status: v.Status, + } + + return res +} diff --git a/gen/http/task_list/server/paths.go b/gen/http/task_list/server/paths.go index 80662ac5bb501534cf2f22138127b98eb86bcece..d00af8a7ef452988e0e7caec0e51d8035b499b5f 100644 --- a/gen/http/task_list/server/paths.go +++ b/gen/http/task_list/server/paths.go @@ -15,3 +15,8 @@ import ( func CreateTaskListPath(taskListName string) string { return fmt.Sprintf("/v1/taskList/%v", taskListName) } + +// TaskListResultTaskListPath returns the URL path to the taskList service TaskListResult HTTP endpoint. +func TaskListResultTaskListPath(taskListID string) string { + return fmt.Sprintf("/v1/taskListResult/%v", taskListID) +} diff --git a/gen/http/task_list/server/server.go b/gen/http/task_list/server/server.go index 4d4d72dcec6b49130f5823ceb8148687eb4ccab0..0689f32a88bdad16b1000185e1998c02a1415558 100644 --- a/gen/http/task_list/server/server.go +++ b/gen/http/task_list/server/server.go @@ -18,8 +18,9 @@ import ( // Server lists the taskList service endpoint HTTP handlers. type Server struct { - Mounts []*MountPoint - Create http.Handler + Mounts []*MountPoint + Create http.Handler + TaskListResult http.Handler } // ErrorNamer is an interface implemented by generated error structs that @@ -56,8 +57,10 @@ func New( return &Server{ Mounts: []*MountPoint{ {"Create", "POST", "/v1/taskList/{taskListName}"}, + {"TaskListResult", "GET", "/v1/taskListResult/{taskListID}"}, }, - Create: NewCreateHandler(e.Create, mux, decoder, encoder, errhandler, formatter), + Create: NewCreateHandler(e.Create, mux, decoder, encoder, errhandler, formatter), + TaskListResult: NewTaskListResultHandler(e.TaskListResult, mux, decoder, encoder, errhandler, formatter), } } @@ -67,11 +70,13 @@ func (s *Server) Service() string { return "taskList" } // Use wraps the server handlers with the given middleware. func (s *Server) Use(m func(http.Handler) http.Handler) { s.Create = m(s.Create) + s.TaskListResult = m(s.TaskListResult) } // Mount configures the mux to serve the taskList endpoints. func Mount(mux goahttp.Muxer, h *Server) { MountCreateHandler(mux, h.Create) + MountTaskListResultHandler(mux, h.TaskListResult) } // Mount configures the mux to serve the taskList endpoints. @@ -129,3 +134,54 @@ func NewCreateHandler( } }) } + +// MountTaskListResultHandler configures the mux to serve the "taskList" +// service "TaskListResult" endpoint. +func MountTaskListResultHandler(mux goahttp.Muxer, h http.Handler) { + f, ok := h.(http.HandlerFunc) + if !ok { + f = func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTP(w, r) + } + } + mux.Handle("GET", "/v1/taskListResult/{taskListID}", f) +} + +// NewTaskListResultHandler creates a HTTP handler which loads the HTTP request +// and calls the "taskList" service "TaskListResult" endpoint. +func NewTaskListResultHandler( + endpoint goa.Endpoint, + mux goahttp.Muxer, + decoder func(*http.Request) goahttp.Decoder, + encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, + errhandler func(context.Context, http.ResponseWriter, error), + formatter func(err error) goahttp.Statuser, +) http.Handler { + var ( + decodeRequest = DecodeTaskListResultRequest(mux, decoder) + encodeResponse = EncodeTaskListResultResponse(encoder) + encodeError = goahttp.ErrorEncoder(encoder, formatter) + ) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := context.WithValue(r.Context(), goahttp.AcceptTypeKey, r.Header.Get("Accept")) + ctx = context.WithValue(ctx, goa.MethodKey, "TaskListResult") + ctx = context.WithValue(ctx, goa.ServiceKey, "taskList") + payload, err := decodeRequest(r) + if err != nil { + if err := encodeError(ctx, w, err); err != nil { + errhandler(ctx, w, err) + } + return + } + res, err := endpoint(ctx, payload) + if err != nil { + if err := encodeError(ctx, w, err); err != nil { + errhandler(ctx, w, err) + } + return + } + if err := encodeResponse(ctx, w, res); err != nil { + errhandler(ctx, w, err) + } + }) +} diff --git a/gen/http/task_list/server/types.go b/gen/http/task_list/server/types.go index 879b0a1fa38948d6d92357413004176b75adea8c..3b4aefe5ac4ddb025a2762244e38266c3fba179c 100644 --- a/gen/http/task_list/server/types.go +++ b/gen/http/task_list/server/types.go @@ -18,6 +18,68 @@ type CreateResponseBody struct { TaskListID string `form:"taskListID" json:"taskListID" xml:"taskListID"` } +// TaskListResultMultiStatusResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultMultiStatusResponseBody struct { + // Unique taskList identifier. + ID string `form:"id" json:"id" xml:"id"` + // Current status of the taskList + Status string `form:"status" json:"status" xml:"status"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// TaskListResultCreatedResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultCreatedResponseBody struct { + // Unique taskList identifier. + ID string `form:"id" json:"id" xml:"id"` + // Current status of the taskList + Status string `form:"status" json:"status" xml:"status"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// TaskListResultAcceptedResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultAcceptedResponseBody struct { + // Unique taskList identifier. + ID string `form:"id" json:"id" xml:"id"` + // Current status of the taskList + Status string `form:"status" json:"status" xml:"status"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// TaskListResultOKResponseBody is the type of the "taskList" service +// "TaskListResult" endpoint HTTP response body. +type TaskListResultOKResponseBody struct { + // Unique taskList identifier. + ID string `form:"id" json:"id" xml:"id"` + // Current status of the taskList + Status string `form:"status" json:"status" xml:"status"` + // Array of GroupStatus + Groups []*GroupStatusResponseBody `form:"groups,omitempty" json:"groups,omitempty" xml:"groups,omitempty"` +} + +// GroupStatusResponseBody is used to define fields on response body types. +type GroupStatusResponseBody struct { + // Unique group identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the group + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` + // Array of TaskStatus + Tasks []*TaskStatusResponseBody `form:"tasks,omitempty" json:"tasks,omitempty" xml:"tasks,omitempty"` +} + +// TaskStatusResponseBody is used to define fields on response body types. +type TaskStatusResponseBody struct { + // Unique task identifier. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Current status of the task + Status *string `form:"status,omitempty" json:"status,omitempty" xml:"status,omitempty"` +} + // NewCreateResponseBody builds the HTTP response body from the result of the // "Create" endpoint of the "taskList" service. func NewCreateResponseBody(res *tasklist.CreateTaskListResult) *CreateResponseBody { @@ -27,6 +89,70 @@ func NewCreateResponseBody(res *tasklist.CreateTaskListResult) *CreateResponseBo return body } +// NewTaskListResultMultiStatusResponseBody builds the HTTP response body from +// the result of the "TaskListResult" endpoint of the "taskList" service. +func NewTaskListResultMultiStatusResponseBody(res *tasklist.TaskListStatus) *TaskListResultMultiStatusResponseBody { + body := &TaskListResultMultiStatusResponseBody{ + ID: res.ID, + Status: res.Status, + } + if res.Groups != nil { + body.Groups = make([]*GroupStatusResponseBody, len(res.Groups)) + for i, val := range res.Groups { + body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val) + } + } + return body +} + +// NewTaskListResultCreatedResponseBody builds the HTTP response body from the +// result of the "TaskListResult" endpoint of the "taskList" service. +func NewTaskListResultCreatedResponseBody(res *tasklist.TaskListStatus) *TaskListResultCreatedResponseBody { + body := &TaskListResultCreatedResponseBody{ + ID: res.ID, + Status: res.Status, + } + if res.Groups != nil { + body.Groups = make([]*GroupStatusResponseBody, len(res.Groups)) + for i, val := range res.Groups { + body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val) + } + } + return body +} + +// NewTaskListResultAcceptedResponseBody builds the HTTP response body from the +// result of the "TaskListResult" endpoint of the "taskList" service. +func NewTaskListResultAcceptedResponseBody(res *tasklist.TaskListStatus) *TaskListResultAcceptedResponseBody { + body := &TaskListResultAcceptedResponseBody{ + ID: res.ID, + Status: res.Status, + } + if res.Groups != nil { + body.Groups = make([]*GroupStatusResponseBody, len(res.Groups)) + for i, val := range res.Groups { + body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val) + } + } + return body +} + +// NewTaskListResultOKResponseBody builds the HTTP response body from the +// result of the "TaskListResult" endpoint of the "taskList" service. +func NewTaskListResultOKResponseBody(res *tasklist.TaskListStatus) *TaskListResultOKResponseBody { + body := &TaskListResultOKResponseBody{ + ID: res.ID, + Status: res.Status, + } + if res.Groups != nil { + body.Groups = make([]*GroupStatusResponseBody, len(res.Groups)) + for i, val := range res.Groups { + body.Groups[i] = marshalTasklistGroupStatusToGroupStatusResponseBody(val) + } + } + return body +} + // NewCreateTaskListRequest builds a taskList service Create endpoint payload. func NewCreateTaskListRequest(body interface{}, taskListName string, cacheNamespace *string, cacheScope *string) *tasklist.CreateTaskListRequest { v := body @@ -39,3 +165,12 @@ func NewCreateTaskListRequest(body interface{}, taskListName string, cacheNamesp return res } + +// NewTaskListResultRequest builds a taskList service TaskListResult endpoint +// payload. +func NewTaskListResultRequest(taskListID string) *tasklist.TaskListResultRequest { + v := &tasklist.TaskListResultRequest{} + v.TaskListID = taskListID + + return v +} diff --git a/gen/task_list/client.go b/gen/task_list/client.go index dcaf4ef0bdab346d90e25b0f4773756a72c10f42..72bb221fcd4488da8b6a33abd31996d26e399453 100644 --- a/gen/task_list/client.go +++ b/gen/task_list/client.go @@ -15,13 +15,15 @@ import ( // Client is the "taskList" service client. type Client struct { - CreateEndpoint goa.Endpoint + CreateEndpoint goa.Endpoint + TaskListResultEndpoint goa.Endpoint } // NewClient initializes a "taskList" service client given the endpoints. -func NewClient(create goa.Endpoint) *Client { +func NewClient(create, taskListResult goa.Endpoint) *Client { return &Client{ - CreateEndpoint: create, + CreateEndpoint: create, + TaskListResultEndpoint: taskListResult, } } @@ -34,3 +36,13 @@ func (c *Client) Create(ctx context.Context, p *CreateTaskListRequest) (res *Cre } return ires.(*CreateTaskListResult), nil } + +// TaskListResult calls the "TaskListResult" endpoint of the "taskList" service. +func (c *Client) TaskListResult(ctx context.Context, p *TaskListResultRequest) (res *TaskListStatus, err error) { + var ires interface{} + ires, err = c.TaskListResultEndpoint(ctx, p) + if err != nil { + return + } + return ires.(*TaskListStatus), nil +} diff --git a/gen/task_list/endpoints.go b/gen/task_list/endpoints.go index 0a2bc0e4b32a0704d6cf429df56fd1c5823cf708..7af1fef229827f5d823f5848edbb4274dbd77e00 100644 --- a/gen/task_list/endpoints.go +++ b/gen/task_list/endpoints.go @@ -15,19 +15,22 @@ import ( // Endpoints wraps the "taskList" service endpoints. type Endpoints struct { - Create goa.Endpoint + Create goa.Endpoint + TaskListResult goa.Endpoint } // NewEndpoints wraps the methods of the "taskList" service with endpoints. func NewEndpoints(s Service) *Endpoints { return &Endpoints{ - Create: NewCreateEndpoint(s), + Create: NewCreateEndpoint(s), + TaskListResult: NewTaskListResultEndpoint(s), } } // Use applies the given middleware to all the "taskList" service endpoints. func (e *Endpoints) Use(m func(goa.Endpoint) goa.Endpoint) { e.Create = m(e.Create) + e.TaskListResult = m(e.TaskListResult) } // NewCreateEndpoint returns an endpoint function that calls the method @@ -38,3 +41,12 @@ func NewCreateEndpoint(s Service) goa.Endpoint { return s.Create(ctx, p) } } + +// NewTaskListResultEndpoint returns an endpoint function that calls the method +// "TaskListResult" of service "taskList". +func NewTaskListResultEndpoint(s Service) goa.Endpoint { + return func(ctx context.Context, req interface{}) (interface{}, error) { + p := req.(*TaskListResultRequest) + return s.TaskListResult(ctx, p) + } +} diff --git a/gen/task_list/service.go b/gen/task_list/service.go index e7dbf3ae62c41719450b9ba97002b00c184f3fce..7d8d7f7d82c20b6578c598c6d55ccbcaf486319d 100644 --- a/gen/task_list/service.go +++ b/gen/task_list/service.go @@ -13,9 +13,12 @@ import ( // TaskList service provides endpoints to work with task lists. type Service interface { - // Create a task list, corresponding groups and tasks and put them in - // respective queues for execution. + // Create a task list and corresponding tasks and put them in respective queues + // for execution. Create(context.Context, *CreateTaskListRequest) (res *CreateTaskListResult, err error) + // TaskListResult retrieves a taskList result containing all tasks' unique IDs + // and statuses from the Cache service. + TaskListResult(context.Context, *TaskListResultRequest) (res *TaskListStatus, err error) } // ServiceName is the name of the service as defined in the design. This is the @@ -26,7 +29,7 @@ const ServiceName = "taskList" // MethodNames lists the service method names as defined in the design. These // are the same values that are set in the endpoint request contexts under the // MethodKey key. -var MethodNames = [1]string{"Create"} +var MethodNames = [2]string{"Create", "TaskListResult"} // CreateTaskListRequest is the payload type of the taskList service Create // method. @@ -47,3 +50,37 @@ type CreateTaskListResult struct { // Unique taskList identifier. TaskListID string } + +type GroupStatus struct { + // Unique group identifier. + ID *string + // Current status of the group + Status *string + // Array of TaskStatus + Tasks []*TaskStatus +} + +// TaskListResultRequest is the payload type of the taskList service +// TaskListResult method. +type TaskListResultRequest struct { + // Unique taskList identifier. + TaskListID string +} + +// TaskListStatus is the result type of the taskList service TaskListResult +// method. +type TaskListStatus struct { + // Unique taskList identifier. + ID string + // Current status of the taskList + Status string + // Array of GroupStatus + Groups []*GroupStatus +} + +type TaskStatus struct { + // Unique task identifier. + ID *string + // Current status of the task + Status *string +}