fix: now gettitles must work
Some checks failed
Build and Deploy Go App / build (push) Has been cancelled
Build and Deploy Go App / deploy (push) Has been cancelled

This commit is contained in:
Iron_Felix 2025-11-19 04:11:31 +03:00
parent 7e6520c931
commit e2ac80610c
3 changed files with 27 additions and 18 deletions

View file

@ -240,6 +240,8 @@ func (s Server) GetTitles(ctx context.Context, request oapi.GetTitlesRequestObje
Rating: request.Params.Rating,
ReleaseYear: request.Params.ReleaseYear,
ReleaseSeason: season,
Forward: true,
SortBy: "id",
Limit: request.Params.Limit,
})
if err != nil {

View file

@ -111,14 +111,12 @@ ORDER BY
-- Основной ключ: выбранное поле
CASE
WHEN sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'id' THEN id
WHEN sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'name' THEN name
WHEN sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'year' THEN release_year
WHEN sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'rating' THEN rating
WHEN sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'views' THEN views
END ASC,
CASE
WHEN NOT sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'id' THEN id
WHEN NOT sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'name' THEN name
WHEN NOT sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'year' THEN release_year
WHEN NOT sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'rating' THEN rating
WHEN NOT sqlc.arg(forward)::boolean AND sqlc.arg(sort_by)::text = 'views' THEN views

View file

@ -315,18 +315,29 @@ WHERE
AND ($3::float IS NULL OR rating >= $3::float)
AND ($4::int IS NULL OR release_year = $4::int)
AND ($5::release_season_t IS NULL OR release_season = $5::release_season_t)
ORDER BY CASE
WHEN $6::boolean AND $7::text = 'name' THEN name
WHEN $8::boolean AND $7::text = 'id' THEN id
WHEN $8::boolean AND $7::text = 'name' THEN name
WHEN $8::boolean AND $7::text = 'id' THEN id
END ASC, CASE
WHEN NOT $8::boolean AND $7::text = 'name' THEN name
WHEN NOT $8::boolean AND $7::text = 'id' THEN id
WHEN NOT $8::boolean AND $7::text = 'name' THEN name
WHEN NOT $8::boolean AND $7::text = 'id' THEN id
ORDER BY
-- Основной ключ: выбранное поле
CASE
WHEN $6::boolean AND $7::text = 'id' THEN id
WHEN $6::boolean AND $7::text = 'year' THEN release_year
WHEN $6::boolean AND $7::text = 'rating' THEN rating
WHEN $6::boolean AND $7::text = 'views' THEN views
END ASC,
CASE
WHEN NOT $6::boolean AND $7::text = 'id' THEN id
WHEN NOT $6::boolean AND $7::text = 'year' THEN release_year
WHEN NOT $6::boolean AND $7::text = 'rating' THEN rating
WHEN NOT $6::boolean AND $7::text = 'views' THEN views
END DESC,
-- Вторичный ключ: id только если НЕ сортируем по id
CASE
WHEN $7::text != 'id' AND $6::boolean THEN id
END ASC,
CASE
WHEN $7::text != 'id' AND NOT $6::boolean THEN id
END DESC
LIMIT COALESCE($9::int, 100)
LIMIT COALESCE($8::int, 100)
`
type SearchTitlesParams struct {
@ -336,8 +347,7 @@ type SearchTitlesParams struct {
ReleaseYear *int32 `json:"release_year"`
ReleaseSeason *ReleaseSeasonT `json:"release_season"`
Forward bool `json:"forward"`
OrderBy string `json:"order_by"`
Reverse bool `json:"reverse"`
SortBy string `json:"sort_by"`
Limit *int32 `json:"limit"`
}
@ -349,8 +359,7 @@ func (q *Queries) SearchTitles(ctx context.Context, arg SearchTitlesParams) ([]T
arg.ReleaseYear,
arg.ReleaseSeason,
arg.Forward,
arg.OrderBy,
arg.Reverse,
arg.SortBy,
arg.Limit,
)
if err != nil {