fix: now gettitles must work
This commit is contained in:
parent
7e6520c931
commit
e2ac80610c
3 changed files with 27 additions and 18 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue