feat: cursor implemented

This commit is contained in:
Iron_Felix 2025-11-22 00:01:48 +03:00
parent 9c0fada00e
commit af0492cdf1
8 changed files with 435 additions and 106 deletions

View file

@ -218,9 +218,17 @@ func (s Server) GetTitlesTitleId(ctx context.Context, request oapi.GetTitlesTitl
func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObject) (oapi.GetTitlesResponseObject, error) {
opai_titles := make([]oapi.Title, 0)
cursor := oapi.CursorObj{
Id: 1,
}
// old_cursor := oapi.CursorObj{
// Id: 1,
// }
// if request.Params.Cursor != nil {
// if old_cursor, err := parseCursor(*request.Params.Cursor); err != nil {
// log.Errorf("%v", err)
// return oapi.GetTitles400Response{}, err
// }
// }
word := Word2Sqlc(request.Params.Word)
status, err := TitleStatus2Sqlc(request.Params.Status)
@ -233,17 +241,29 @@ func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObje
log.Errorf("%v", err)
return oapi.GetTitles400Response{}, err
}
// param = nil means it will not be used
titles, err := s.db.SearchTitles(ctx, sqlc.SearchTitlesParams{
params := sqlc.SearchTitlesParams{
Word: word,
Status: status,
Rating: request.Params.Rating,
ReleaseYear: request.Params.ReleaseYear,
ReleaseSeason: season,
Forward: true,
SortBy: "id",
Limit: request.Params.Limit,
})
// SortBy: "id",
Limit: request.Params.Limit,
}
if request.Params.Sort != nil {
if request.Params.Cursor != nil {
err := ParseCursorInto(string(*request.Params.Sort), string(*request.Params.Cursor), &params)
if err != nil {
log.Errorf("%v", err)
return oapi.GetTitles400Response{}, nil
}
}
}
// param = nil means it will not be used
titles, err := s.db.SearchTitles(ctx, params)
if err != nil {
log.Errorf("%v", err)
return oapi.GetTitles500Response{}, nil
@ -262,5 +282,5 @@ func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObje
opai_titles = append(opai_titles, t)
}
return oapi.GetTitles200JSONResponse{Cursor: cursor, Data: opai_titles}, nil
return oapi.GetTitles200JSONResponse{Cursor: oapi.CursorObj{}, Data: opai_titles}, nil
}