feat: cursor added

This commit is contained in:
Iron_Felix 2025-11-19 00:41:54 +03:00
parent 6836cfa057
commit cdfa14cece
2 changed files with 139 additions and 23 deletions

View file

@ -24,6 +24,14 @@ const (
Winter ReleaseSeason = "winter"
)
// Defines values for TitleSort.
const (
Id TitleSort = "id"
Rating TitleSort = "rating"
Views TitleSort = "views"
Year TitleSort = "year"
)
// Defines values for TitleStatus.
const (
TitleStatusFinished TitleStatus = "finished"
@ -91,6 +99,9 @@ type Title struct {
AdditionalProperties map[string]interface{} `json:"-"`
}
// TitleSort Title sort order
type TitleSort string
// TitleStatus Title status
type TitleStatus string
@ -139,6 +150,9 @@ type Cursor = string
// GetTitlesParams defines parameters for GetTitles.
type GetTitlesParams struct {
Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"`
Sort *TitleSort `form:"sort,omitempty" json:"sort,omitempty"`
SortForward *bool `form:"sort_forward,omitempty" json:"sort_forward,omitempty"`
Word *string `form:"word,omitempty" json:"word,omitempty"`
Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"`
Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"`
@ -162,9 +176,13 @@ type GetUsersUserIdParams struct {
// GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles.
type GetUsersUserIdTitlesParams struct {
Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"`
Query *string `form:"query,omitempty" json:"query,omitempty"`
Limit *int `form:"limit,omitempty" json:"limit,omitempty"`
Offset *int `form:"offset,omitempty" json:"offset,omitempty"`
Word *string `form:"word,omitempty" json:"word,omitempty"`
Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"`
WatchStatus *UserTitleStatus `form:"watch_status,omitempty" json:"watch_status,omitempty"`
Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"`
ReleaseYear *int32 `form:"release_year,omitempty" json:"release_year,omitempty"`
ReleaseSeason *ReleaseSeason `form:"release_season,omitempty" json:"release_season,omitempty"`
Limit *int32 `form:"limit,omitempty" json:"limit,omitempty"`
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
@ -580,6 +598,30 @@ func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) {
// Parameter object where we will unmarshal all parameters from the context
var params GetTitlesParams
// ------------- Optional query parameter "cursor" -------------
err = runtime.BindQueryParameter("form", true, false, "cursor", c.Request.URL.Query(), &params.Cursor)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter cursor: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "sort" -------------
err = runtime.BindQueryParameter("form", true, false, "sort", c.Request.URL.Query(), &params.Sort)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter sort: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "sort_forward" -------------
err = runtime.BindQueryParameter("form", true, false, "sort_forward", c.Request.URL.Query(), &params.SortForward)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter sort_forward: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "word" -------------
err = runtime.BindQueryParameter("form", true, false, "word", c.Request.URL.Query(), &params.Word)
@ -749,11 +791,51 @@ func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) {
return
}
// ------------- Optional query parameter "query" -------------
// ------------- Optional query parameter "word" -------------
err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), &params.Query)
err = runtime.BindQueryParameter("form", true, false, "word", c.Request.URL.Query(), &params.Word)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest)
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter word: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "status" -------------
err = runtime.BindQueryParameter("form", true, false, "status", c.Request.URL.Query(), &params.Status)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter status: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "watch_status" -------------
err = runtime.BindQueryParameter("form", true, false, "watch_status", c.Request.URL.Query(), &params.WatchStatus)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter watch_status: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "rating" -------------
err = runtime.BindQueryParameter("form", true, false, "rating", c.Request.URL.Query(), &params.Rating)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter rating: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "release_year" -------------
err = runtime.BindQueryParameter("form", true, false, "release_year", c.Request.URL.Query(), &params.ReleaseYear)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter release_year: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "release_season" -------------
err = runtime.BindQueryParameter("form", true, false, "release_season", c.Request.URL.Query(), &params.ReleaseSeason)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter release_season: %w", err), http.StatusBadRequest)
return
}
@ -765,14 +847,6 @@ func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) {
return
}
// ------------- Optional query parameter "offset" -------------
err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), &params.Offset)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "fields" -------------
err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), &params.Fields)

View file

@ -11,6 +11,13 @@ paths:
get:
summary: Get titles
parameters:
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/title_sort'
- in: query
name: sort_forward
default: true
schema:
type: boolean
- in: query
name: word
schema:
@ -289,19 +296,37 @@ paths:
schema:
type: string
- in: query
name: query
name: word
schema:
type: string
- in: query
name: status
schema:
$ref: '#/components/schemas/TitleStatus'
- in: query
name: watch_status
schema:
$ref: '#/components/schemas/UserTitleStatus'
- in: query
name: rating
schema:
type: number
format: double
- in: query
name: release_year
schema:
type: integer
format: int32
- in: query
name: release_season
schema:
$ref: '#/components/schemas/ReleaseSeason'
- in: query
name: limit
schema:
type: integer
format: int32
default: 10
- in: query
name: offset
schema:
type: integer
default: 0
- in: query
name: fields
schema:
@ -577,14 +602,31 @@ paths:
components:
parameters:
cursor:
cursor: # example base64( {id: 1, param: 2019})
in: query
name: cursor
required: false
schema:
type: string
title_sort:
in: query
name: sort
required: false
schema:
$ref: '#/components/schemas/TitleSort'
schemas:
TitleSort:
type: string
description: Title sort order
default: id
enum:
- id
- year
- rating
- views
Image:
type: object
properties: