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" Winter ReleaseSeason = "winter"
) )
// Defines values for TitleSort.
const (
Id TitleSort = "id"
Rating TitleSort = "rating"
Views TitleSort = "views"
Year TitleSort = "year"
)
// Defines values for TitleStatus. // Defines values for TitleStatus.
const ( const (
TitleStatusFinished TitleStatus = "finished" TitleStatusFinished TitleStatus = "finished"
@ -91,6 +99,9 @@ type Title struct {
AdditionalProperties map[string]interface{} `json:"-"` AdditionalProperties map[string]interface{} `json:"-"`
} }
// TitleSort Title sort order
type TitleSort string
// TitleStatus Title status // TitleStatus Title status
type TitleStatus string type TitleStatus string
@ -139,6 +150,9 @@ type Cursor = string
// GetTitlesParams defines parameters for GetTitles. // GetTitlesParams defines parameters for GetTitles.
type GetTitlesParams struct { 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"` Word *string `form:"word,omitempty" json:"word,omitempty"`
Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"` Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"`
Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"` Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"`
@ -161,11 +175,15 @@ type GetUsersUserIdParams struct {
// GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles. // GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles.
type GetUsersUserIdTitlesParams struct { type GetUsersUserIdTitlesParams struct {
Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"` Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"`
Query *string `form:"query,omitempty" json:"query,omitempty"` Word *string `form:"word,omitempty" json:"word,omitempty"`
Limit *int `form:"limit,omitempty" json:"limit,omitempty"` Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"`
Offset *int `form:"offset,omitempty" json:"offset,omitempty"` WatchStatus *UserTitleStatus `form:"watch_status,omitempty" json:"watch_status,omitempty"`
Fields *string `form:"fields,omitempty" json:"fields,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"`
} }
// Getter for additional properties for Title. Returns the specified // Getter for additional properties for Title. Returns the specified
@ -580,6 +598,30 @@ func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) {
// Parameter object where we will unmarshal all parameters from the context // Parameter object where we will unmarshal all parameters from the context
var params GetTitlesParams 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" ------------- // ------------- Optional query parameter "word" -------------
err = runtime.BindQueryParameter("form", true, false, "word", c.Request.URL.Query(), &params.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 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 { 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 return
} }
@ -765,14 +847,6 @@ func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) {
return 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" ------------- // ------------- Optional query parameter "fields" -------------
err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), &params.Fields) err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), &params.Fields)

View file

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