diff --git a/Makefile b/Makefile index 151b92ab..448341d9 100644 --- a/Makefile +++ b/Makefile @@ -127,8 +127,8 @@ open-coverage: # lint runs the linter. lint: golangci-lint -# swagger generates the swagger server code. -swagger: clean-swagger gen-swagger +# api generates the swagger server code. +api: clean-swagger gen-swagger # certs generates the certificates to use in the development environment. certs: ${CERTS_DIR} ${SERVER_CERT_FILE} ${CLIENT_CERT_FILE} certs-check @@ -228,8 +228,8 @@ clean-swagger: gen-swagger: @echo "${COLOR_GREEN}Generating the swagger server code...${COLOR_RESET}" @GOBIN=${LOCAL_BIN_DIR} go install $(PKG_swagger) - @${LOCAL_BIN_DIR}/swagger validate ./swagger.yaml - @${LOCAL_BIN_DIR}/swagger generate server -t ${FE_GEN_DIR} --server-package=restapi --exclude-main -f ./swagger.yaml + @${LOCAL_BIN_DIR}/swagger validate ./api.v1.yaml + @${LOCAL_BIN_DIR}/swagger generate server -t ${FE_GEN_DIR} --server-package=restapi --exclude-main -f ./api.v1.yaml @go mod tidy ############################################################################## diff --git a/swagger.yaml b/api.v1.yaml similarity index 99% rename from swagger.yaml rename to api.v1.yaml index b71f170a..543f240a 100644 --- a/swagger.yaml +++ b/api.v1.yaml @@ -30,11 +30,11 @@ paths: parameters: - name: page in: query - required: true + required: false type: integer - name: limit in: query - required: true + required: false type: integer - name: searchName in: query @@ -784,4 +784,4 @@ definitions: type: string required: - Tags - - Errors \ No newline at end of file + - Errors diff --git a/docs/source/locale/ja/LC_MESSAGES/rest.po b/docs/source/locale/ja/LC_MESSAGES/rest.po index b9ab1804..7d30678f 100644 --- a/docs/source/locale/ja/LC_MESSAGES/rest.po +++ b/docs/source/locale/ja/LC_MESSAGES/rest.po @@ -30,7 +30,7 @@ msgstr "" #: ../../source/rest.rst:8 f025ce93dadd4f23b4837d5c83f4f5f5 msgid "" "See the `OpenAPI Schema for Dagu `_ for more details." +"dev/dagu/blob/main/api.v1.yaml>`_ for more details." msgstr "" #: ../../source/rest.rst:10 c6a6f4609e584ebb92c6f0b934f458c7 diff --git a/docs/source/locale/zh/LC_MESSAGES/rest.po b/docs/source/locale/zh/LC_MESSAGES/rest.po index 7bf9093c..0902017d 100644 --- a/docs/source/locale/zh/LC_MESSAGES/rest.po +++ b/docs/source/locale/zh/LC_MESSAGES/rest.po @@ -30,7 +30,7 @@ msgstr "" #: ../../source/rest.rst:8 4408484915c24e908d1c23719ac9b356 msgid "" "See the `OpenAPI Schema for Dagu `_ for more details." +"dev/dagu/blob/main/api.v1.yaml>`_ for more details." msgstr "" #: ../../source/rest.rst:10 233a08827cda408aaa69278af4faf86d diff --git a/docs/source/rest.rst b/docs/source/rest.rst index cbbed482..9ec995fc 100644 --- a/docs/source/rest.rst +++ b/docs/source/rest.rst @@ -5,7 +5,7 @@ REST API Docs Dagu server provides simple APIs to query and control DAGs. -See the `OpenAPI Schema for Dagu `_ for more details. +See the `OpenAPI Schema for Dagu `_ for more details. **Endpoint** : `localhost:8080` (default) diff --git a/go.mod b/go.mod index 6b72fd07..3cd49ea3 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/go-openapi/swag v0.23.0 github.com/go-openapi/validate v0.24.0 github.com/go-resty/resty/v2 v2.7.0 - github.com/go-swagger/go-swagger v0.31.0 + github.com/go-swagger/go-swagger v0.30.5 github.com/golangci/golangci-lint v1.59.1 github.com/google/addlicense v1.1.1 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index c7b1f90e..6c13b163 100644 --- a/go.sum +++ b/go.sum @@ -229,8 +229,10 @@ github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1 github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-swagger/go-swagger v0.31.0 h1:H8eOYQnY2u7vNKWDNykv2xJP3pBhRG/R+SOCAmKrLlc= -github.com/go-swagger/go-swagger v0.31.0/go.mod h1:WSigRRWEig8zV6t6Sm8Y+EmUjlzA/HoaZJ5edupq7po= +github.com/go-swagger/go-swagger v0.30.5 h1:SQ2+xSonWjjoEMOV5tcOnZJVlfyUfCBhGQGArS1b9+U= +github.com/go-swagger/go-swagger v0.30.5/go.mod h1:cWUhSyCNqV7J1wkkxfr5QmbcnCewetCdvEXqgPvbc/Q= +github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013 h1:l9rI6sNaZgNC0LnF3MiE+qTmyBA/tZAg1rtyrGbUMK0= +github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013/go.mod h1:b65mBPzqzZWxOZGxSWrqs4GInLIn+u99Q9q7p+GKni0= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= diff --git a/internal/client/client.go b/internal/client/client.go index fd90b9a6..5925df15 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -18,7 +18,6 @@ package client import ( "errors" "fmt" - "math" "os" "os/exec" "path/filepath" @@ -292,13 +291,8 @@ func (e *client) GetAllStatus() ( return ret, errs, err } -func (e *client) getPageCount(total int64, limit int64) int { - pageCount := int(math.Ceil(float64(total) / float64(limit))) - if pageCount == 0 { - pageCount = 1 - } - - return pageCount +func (e *client) getPageCount(total int, limit int) int { + return (total-1)/(limit) + 1 } func (e *client) GetAllStatusPagination(params dags.ListDagsParams) ([]*DAGStatus, *DagListPaginationSummaryResult, error) { @@ -310,9 +304,18 @@ func (e *client) GetAllStatusPagination(params dags.ListDagsParams) ([]*DAGStatu currentStatus *DAGStatus ) + page := 1 + if params.Page != nil { + page = int(*params.Page) + } + limit := 100 + if params.Limit != nil { + limit = int(*params.Limit) + } + if dagListPaginationResult, err = dagStore.ListPagination(persistence.DAGListPaginationArgs{ - Page: int(params.Page), - Limit: int(params.Limit), + Page: page, + Limit: limit, Name: params.SearchName, Tag: params.SearchTag, }); err != nil { @@ -327,7 +330,7 @@ func (e *client) GetAllStatusPagination(params dags.ListDagsParams) ([]*DAGStatu } return dagStatusList, &DagListPaginationSummaryResult{ - PageCount: e.getPageCount(int64(dagListPaginationResult.Count), params.Limit), + PageCount: e.getPageCount(dagListPaginationResult.Count, limit), ErrorList: dagListPaginationResult.ErrorList, }, nil } diff --git a/internal/client/client_test.go b/internal/client/client_test.go index 15b39d71..0b8fdecc 100644 --- a/internal/client/client_test.go +++ b/internal/client/client_test.go @@ -22,13 +22,11 @@ import ( "testing" "time" - "github.com/go-openapi/swag" "github.com/stretchr/testify/require" "github.com/dagu-org/dagu/internal/client" "github.com/dagu-org/dagu/internal/dag" "github.com/dagu-org/dagu/internal/dag/scheduler" - "github.com/dagu-org/dagu/internal/frontend/gen/restapi/operations/dags" "github.com/dagu-org/dagu/internal/persistence/model" "github.com/dagu-org/dagu/internal/sock" "github.com/dagu-org/dagu/internal/test" @@ -376,475 +374,6 @@ func TestClient_ReadHistory(t *testing.T) { }) } -func TestClient_GetAllStatusPagination(t *testing.T) { - t.Run("TestClient_Empty", func(t *testing.T) { - setup := test.SetupTest(t) - defer setup.Cleanup() - - cli := setup.Client() - - _, result, err := cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - }) - require.Equal(t, 1, result.PageCount) - require.NoError(t, err) - }) - - t.Run("TestClient_All", func(t *testing.T) { - setup := test.SetupTest(t) - defer setup.Cleanup() - - cli := setup.Client() - - // Create DAG List - - for i := 0; i < 20; i++ { - _, err := cli.CreateDAG("test-dag-pagination" + fmt.Sprintf("%d", i)) - require.NoError(t, err) - } - - // Get all statuses. - allDagStatus, result, err := cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - }) - - t.Run("TestClient_WithTags", func(t *testing.T) { - setup := test.SetupTest(t) - defer setup.Cleanup() - - cli := setup.Client() - - // Create DAG List - - for i := 0; i < 40; i++ { - spec := "" - id, err := cli.CreateDAG("test-dag-pagination" + fmt.Sprintf("%d", i)) - require.NoError(t, err) - if i%2 == 0 { - spec = "tags: tag1,tag2\nsteps:\n - name: step1\n command: echo hello\n" - } else { - spec = "tags: tag2,tag3\nsteps:\n - name: step1\n command: echo hello\n" - } - if err = cli.UpdateDAG(id, spec); err != nil { - t.Fatal(err) - } - - } - - // Get all statuses. - allDagStatus, result, err := cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 4, - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 5, - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchTag: swag.String("tag3"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchTag: swag.String("tag3"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchTag: swag.String("tag3"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchTag: swag.String("tag4"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 1, result.PageCount) - }) - - t.Run("TestClient_WithName", func(t *testing.T) { - setup := test.SetupTest(t) - defer setup.Cleanup() - - cli := setup.Client() - - // Create DAG List - for i := 0; i < 40; i++ { - if i%2 == 0 { - _, err := cli.CreateDAG("1test-dag-pagination" + fmt.Sprintf("%d", i)) - require.NoError(t, err) - } else { - _, err := cli.CreateDAG("2test-dag-pagination" + fmt.Sprintf("%d", i)) - require.NoError(t, err) - } - } - - // Get all statuses. - allDagStatus, result, err := cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("1test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchName: swag.String("1test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchName: swag.String("1test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("2test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchName: swag.String("2test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchName: swag.String("2test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchName: swag.String("test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchName: swag.String("test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 4, - SearchName: swag.String("test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 5, - SearchName: swag.String("test-dag-pagination"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("not-exist"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 1, result.PageCount) - }) - - t.Run("TestClient_WithTagsAndName", func(t *testing.T) { - setup := test.SetupTest(t) - defer setup.Cleanup() - - cli := setup.Client() - - // Create DAG List - for i := 0; i < 40; i++ { - spec := "" - id, err := cli.CreateDAG("1test-dag-pagination" + fmt.Sprintf("%d", i)) - require.NoError(t, err) - if i%2 == 0 { - spec = "tags: tag1,tag2\nsteps:\n - name: step1\n command: echo hello\n" - } else { - spec = "tags: tag2,tag3\nsteps:\n - name: step1\n command: echo hello\n" - } - if err = cli.UpdateDAG(id, spec); err != nil { - t.Fatal(err) - } - - } - - // Get all statuses. - allDagStatus, result, err := cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 4, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 5, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag2"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 4, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag3"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 2, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag3"), - }) - require.NoError(t, err) - require.Equal(t, 10, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 3, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("tag3"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 2, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("not-exist"), - SearchTag: swag.String("tag1"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 1, result.PageCount) - - allDagStatus, result, err = cli.GetAllStatusPagination(dags.ListDagsParams{ - Limit: 10, - Page: 1, - SearchName: swag.String("1test-dag-pagination"), - SearchTag: swag.String("not-exist"), - }) - require.NoError(t, err) - require.Equal(t, 0, len(allDagStatus)) - require.Equal(t, 1, result.PageCount) - }) -} - func testDAG(name string) string { return filepath.Join(testdataDir, name) } diff --git a/internal/frontend/gen/restapi/configure_dagu.go b/internal/frontend/gen/restapi/configure_dagu.go index 2e7216b2..9c8cdea4 100644 --- a/internal/frontend/gen/restapi/configure_dagu.go +++ b/internal/frontend/gen/restapi/configure_dagu.go @@ -31,7 +31,7 @@ import ( "github.com/dagu-org/dagu/internal/frontend/gen/restapi/operations/dags" ) -//go:generate swagger generate server --target ../../frontend --name Dagu --spec ../../../swagger.yaml --principal any --exclude-main +//go:generate swagger generate server --target ../../frontend --name Dagu --spec ../../../api.v1.yaml --principal any --exclude-main func configureFlags(api *operations.DaguAPI) { // handlers.CommandLineOptionsGroups = []swag.CommandLineOptionsGroup{ ... } diff --git a/internal/frontend/gen/restapi/embedded_spec.go b/internal/frontend/gen/restapi/embedded_spec.go index 64195d47..736cee85 100644 --- a/internal/frontend/gen/restapi/embedded_spec.go +++ b/internal/frontend/gen/restapi/embedded_spec.go @@ -53,14 +53,12 @@ func init() { { "type": "integer", "name": "page", - "in": "query", - "required": true + "in": "query" }, { "type": "integer", "name": "limit", - "in": "query", - "required": true + "in": "query" }, { "type": "string", @@ -1150,14 +1148,12 @@ func init() { { "type": "integer", "name": "page", - "in": "query", - "required": true + "in": "query" }, { "type": "integer", "name": "limit", - "in": "query", - "required": true + "in": "query" }, { "type": "string", diff --git a/internal/frontend/gen/restapi/operations/dags/list_dags_parameters.go b/internal/frontend/gen/restapi/operations/dags/list_dags_parameters.go index 3a102b9c..de7ae85b 100644 --- a/internal/frontend/gen/restapi/operations/dags/list_dags_parameters.go +++ b/internal/frontend/gen/restapi/operations/dags/list_dags_parameters.go @@ -13,7 +13,6 @@ import ( "github.com/go-openapi/runtime/middleware" "github.com/go-openapi/strfmt" "github.com/go-openapi/swag" - "github.com/go-openapi/validate" ) // NewListDagsParams creates a new ListDagsParams object @@ -34,15 +33,13 @@ type ListDagsParams struct { HTTPRequest *http.Request `json:"-"` /* - Required: true In: query */ - Limit int64 + Limit *int64 /* - Required: true In: query */ - Page int64 + Page *int64 /* In: query */ @@ -91,52 +88,46 @@ func (o *ListDagsParams) BindRequest(r *http.Request, route *middleware.MatchedR // bindLimit binds and validates parameter Limit from query. func (o *ListDagsParams) bindLimit(rawData []string, hasKey bool, formats strfmt.Registry) error { - if !hasKey { - return errors.Required("limit", "query", rawData) - } var raw string if len(rawData) > 0 { raw = rawData[len(rawData)-1] } - // Required: true + // Required: false // AllowEmptyValue: false - if err := validate.RequiredString("limit", "query", raw); err != nil { - return err + if raw == "" { // empty values pass all other validations + return nil } value, err := swag.ConvertInt64(raw) if err != nil { return errors.InvalidType("limit", "query", "int64", raw) } - o.Limit = value + o.Limit = &value return nil } // bindPage binds and validates parameter Page from query. func (o *ListDagsParams) bindPage(rawData []string, hasKey bool, formats strfmt.Registry) error { - if !hasKey { - return errors.Required("page", "query", rawData) - } var raw string if len(rawData) > 0 { raw = rawData[len(rawData)-1] } - // Required: true + // Required: false // AllowEmptyValue: false - if err := validate.RequiredString("page", "query", raw); err != nil { - return err + if raw == "" { // empty values pass all other validations + return nil } value, err := swag.ConvertInt64(raw) if err != nil { return errors.InvalidType("page", "query", "int64", raw) } - o.Page = value + o.Page = &value return nil } diff --git a/internal/frontend/gen/restapi/operations/dags/list_dags_urlbuilder.go b/internal/frontend/gen/restapi/operations/dags/list_dags_urlbuilder.go index 1ce7bdee..ab290f9f 100644 --- a/internal/frontend/gen/restapi/operations/dags/list_dags_urlbuilder.go +++ b/internal/frontend/gen/restapi/operations/dags/list_dags_urlbuilder.go @@ -15,8 +15,8 @@ import ( // ListDagsURL generates an URL for the list dags operation type ListDagsURL struct { - Limit int64 - Page int64 + Limit *int64 + Page *int64 SearchName *string SearchTag *string @@ -54,12 +54,18 @@ func (o *ListDagsURL) Build() (*url.URL, error) { qs := make(url.Values) - limitQ := swag.FormatInt64(o.Limit) + var limitQ string + if o.Limit != nil { + limitQ = swag.FormatInt64(*o.Limit) + } if limitQ != "" { qs.Set("limit", limitQ) } - pageQ := swag.FormatInt64(o.Page) + var pageQ string + if o.Page != nil { + pageQ = swag.FormatInt64(*o.Page) + } if pageQ != "" { qs.Set("page", pageQ) } diff --git a/internal/frontend/gen/restapi/operations/dags/post_dag_action.go b/internal/frontend/gen/restapi/operations/dags/post_dag_action.go index ecbb1ba1..3fde760f 100644 --- a/internal/frontend/gen/restapi/operations/dags/post_dag_action.go +++ b/internal/frontend/gen/restapi/operations/dags/post_dag_action.go @@ -68,7 +68,7 @@ type PostDagActionBody struct { // action // Required: true - // Enum: ["start","suspend","stop","retry","mark-success","mark-failed","save","rename"] + // Enum: [start suspend stop retry mark-success mark-failed save rename] Action *string `json:"action"` // params diff --git a/internal/frontend/gen/restapi/server.go b/internal/frontend/gen/restapi/server.go index f4bfa5a5..bd0a567a 100644 --- a/internal/frontend/gen/restapi/server.go +++ b/internal/frontend/gen/restapi/server.go @@ -80,7 +80,7 @@ type Server struct { ListenLimit int `long:"listen-limit" description:"limit the number of outstanding requests"` KeepAlive time.Duration `long:"keep-alive" description:"sets the TCP keep-alive timeouts on accepted connections. It prunes dead TCP connections ( e.g. closing laptop mid-download)" default:"3m"` ReadTimeout time.Duration `long:"read-timeout" description:"maximum duration before timing out read of the request" default:"30s"` - WriteTimeout time.Duration `long:"write-timeout" description:"maximum duration before timing out write of the response" default:"30s"` + WriteTimeout time.Duration `long:"write-timeout" description:"maximum duration before timing out write of the response" default:"60s"` httpServerL net.Listener TLSHost string `long:"tls-host" description:"the IP to listen on for tls, when not specified it's the same as --host" env:"TLS_HOST"`