mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-20 20:07:03 +01:00
improve the releases api paging (#5831)
* improve the releases api paging * add max limit on API paging
This commit is contained in:
parent
9a137faaaf
commit
892bfd0b19
5 changed files with 29 additions and 2 deletions
|
@ -622,6 +622,8 @@ MIN_INTERVAL = 10m
|
||||||
ENABLE_SWAGGER = true
|
ENABLE_SWAGGER = true
|
||||||
; Max number of items in a page
|
; Max number of items in a page
|
||||||
MAX_RESPONSE_ITEMS = 50
|
MAX_RESPONSE_ITEMS = 50
|
||||||
|
; Default paging number of api
|
||||||
|
DEFAULT_PAGING_NUM = 30
|
||||||
|
|
||||||
[i18n]
|
[i18n]
|
||||||
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR
|
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR
|
||||||
|
|
|
@ -325,6 +325,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
||||||
|
|
||||||
- `ENABLE_SWAGGER`: **true**: Enables /api/swagger, /api/v1/swagger etc. endpoints. True or false; default is true.
|
- `ENABLE_SWAGGER`: **true**: Enables /api/swagger, /api/v1/swagger etc. endpoints. True or false; default is true.
|
||||||
- `MAX_RESPONSE_ITEMS`: **50**: Max number of items in a page.
|
- `MAX_RESPONSE_ITEMS`: **50**: Max number of items in a page.
|
||||||
|
- `DEFAULT_PAGING_NUM`: **30**: Default paging number of api.
|
||||||
|
|
||||||
## i18n (`i18n`)
|
## i18n (`i18n`)
|
||||||
|
|
||||||
|
|
|
@ -194,7 +194,13 @@ menu:
|
||||||
- `PULL`: **300**: 内部仓库间拉取的超时时间,单位秒
|
- `PULL`: **300**: 内部仓库间拉取的超时时间,单位秒
|
||||||
- `GC`: **60**: git仓库GC的超时时间,单位秒
|
- `GC`: **60**: git仓库GC的超时时间,单位秒
|
||||||
|
|
||||||
## markup (`markup`)
|
## API (`api`)
|
||||||
|
|
||||||
|
- `ENABLE_SWAGGER`: **true**: 是否启用swagger路由 /api/swagger, /api/v1/swagger etc. endpoints. True 或 false; 默认是 true.
|
||||||
|
- `MAX_RESPONSE_ITEMS`: **50**: 一个页面最大的项目数。
|
||||||
|
- `DEFAULT_PAGING_NUM`: **30**: API中默认分页条数。
|
||||||
|
|
||||||
|
## Markup (`markup`)
|
||||||
|
|
||||||
外部渲染工具支持,你可以用你熟悉的文档渲染工具. 比如一下将新增一个名字为 `asciidoc` 的渲染工具which is followed `markup.` ini section. And there are some config items below.
|
外部渲染工具支持,你可以用你熟悉的文档渲染工具. 比如一下将新增一个名字为 `asciidoc` 的渲染工具which is followed `markup.` ini section. And there are some config items below.
|
||||||
|
|
||||||
|
|
|
@ -557,9 +557,11 @@ var (
|
||||||
API = struct {
|
API = struct {
|
||||||
EnableSwagger bool
|
EnableSwagger bool
|
||||||
MaxResponseItems int
|
MaxResponseItems int
|
||||||
|
DefaultPagingNum int
|
||||||
}{
|
}{
|
||||||
EnableSwagger: true,
|
EnableSwagger: true,
|
||||||
MaxResponseItems: 50,
|
MaxResponseItems: 50,
|
||||||
|
DefaultPagingNum: 30,
|
||||||
}
|
}
|
||||||
|
|
||||||
U2F = struct {
|
U2F = struct {
|
||||||
|
|
|
@ -7,6 +7,7 @@ package repo
|
||||||
import (
|
import (
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
|
||||||
api "code.gitea.io/sdk/gitea"
|
api "code.gitea.io/sdk/gitea"
|
||||||
)
|
)
|
||||||
|
@ -55,6 +56,20 @@ func GetRelease(ctx *context.APIContext) {
|
||||||
ctx.JSON(200, release.APIFormat())
|
ctx.JSON(200, release.APIFormat())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getPagesInfo(ctx *context.APIContext) (int, int) {
|
||||||
|
page := ctx.QueryInt("page")
|
||||||
|
if page == 0 {
|
||||||
|
page = 1
|
||||||
|
}
|
||||||
|
perPage := ctx.QueryInt("per_page")
|
||||||
|
if perPage == 0 {
|
||||||
|
perPage = setting.API.DefaultPagingNum
|
||||||
|
} else if perPage > setting.API.MaxResponseItems {
|
||||||
|
perPage = setting.API.MaxResponseItems
|
||||||
|
}
|
||||||
|
return page, perPage
|
||||||
|
}
|
||||||
|
|
||||||
// ListReleases list a repository's releases
|
// ListReleases list a repository's releases
|
||||||
func ListReleases(ctx *context.APIContext) {
|
func ListReleases(ctx *context.APIContext) {
|
||||||
// swagger:operation GET /repos/{owner}/{repo}/releases repository repoListReleases
|
// swagger:operation GET /repos/{owner}/{repo}/releases repository repoListReleases
|
||||||
|
@ -76,10 +91,11 @@ func ListReleases(ctx *context.APIContext) {
|
||||||
// responses:
|
// responses:
|
||||||
// "200":
|
// "200":
|
||||||
// "$ref": "#/responses/ReleaseList"
|
// "$ref": "#/responses/ReleaseList"
|
||||||
|
page, limit := getPagesInfo(ctx)
|
||||||
releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
||||||
IncludeDrafts: ctx.Repo.AccessMode >= models.AccessModeWrite,
|
IncludeDrafts: ctx.Repo.AccessMode >= models.AccessModeWrite,
|
||||||
IncludeTags: false,
|
IncludeTags: false,
|
||||||
}, 1, 2147483647)
|
}, page, limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetReleasesByRepoID", err)
|
ctx.Error(500, "GetReleasesByRepoID", err)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue