Compare commits
No commits in common. "ea43e13df4146d9ada2b0429e14826379dddbdb2" and "843dfb24b946241eb0106f0e7a72c9c776fd7bf6" have entirely different histories.
ea43e13df4
...
843dfb24b9
3 changed files with 52 additions and 47 deletions
|
|
@ -65,7 +65,6 @@ func (s Server) mapTitle(ctx context.Context, title sqlc.GetTitleByIDRow) (oapi.
|
||||||
oapi_studio.Id = title.StudioID
|
oapi_studio.Id = title.StudioID
|
||||||
oapi_studio.Description = title.StudioDesc
|
oapi_studio.Description = title.StudioDesc
|
||||||
if title.StudioIllustID != nil {
|
if title.StudioIllustID != nil {
|
||||||
oapi_studio.Poster = &oapi.Image{}
|
|
||||||
oapi_studio.Poster.Id = title.StudioIllustID
|
oapi_studio.Poster.Id = title.StudioIllustID
|
||||||
oapi_studio.Poster.ImagePath = title.StudioImagePath
|
oapi_studio.Poster.ImagePath = title.StudioImagePath
|
||||||
oapi_studio.Poster.StorageType = &title.StudioStorageType
|
oapi_studio.Poster.StorageType = &title.StudioStorageType
|
||||||
|
|
|
||||||
|
|
@ -193,11 +193,12 @@ WHERE
|
||||||
)
|
)
|
||||||
|
|
||||||
AND (
|
AND (
|
||||||
'title_statuses'::title_status_t[] IS NULL
|
-- Если массив пуст (NULL или []) — не фильтруем
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) IS NULL
|
cardinality(sqlc.arg('title_statuses')::title_status_t[]) = 0
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) = 0
|
OR
|
||||||
OR t.title_status = ANY('title_statuses'::title_status_t[])
|
-- Иначе: статус есть в списке
|
||||||
)
|
t.title_status = ANY(sqlc.arg('title_statuses')::title_status_t[])
|
||||||
|
)
|
||||||
AND (sqlc.narg('rating')::float IS NULL OR t.rating >= sqlc.narg('rating')::float)
|
AND (sqlc.narg('rating')::float IS NULL OR t.rating >= sqlc.narg('rating')::float)
|
||||||
AND (sqlc.narg('release_year')::int IS NULL OR t.release_year = sqlc.narg('release_year')::int)
|
AND (sqlc.narg('release_year')::int IS NULL OR t.release_year = sqlc.narg('release_year')::int)
|
||||||
AND (sqlc.narg('release_season')::release_season_t IS NULL OR t.release_season = sqlc.narg('release_season')::release_season_t)
|
AND (sqlc.narg('release_season')::release_season_t IS NULL OR t.release_season = sqlc.narg('release_season')::release_season_t)
|
||||||
|
|
@ -325,16 +326,15 @@ WHERE
|
||||||
)
|
)
|
||||||
|
|
||||||
AND (
|
AND (
|
||||||
'title_statuses'::title_status_t[] IS NULL
|
-- Если массив пуст (NULL или []) — не фильтруем
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) IS NULL
|
cardinality(sqlc.arg('title_statuses')::title_status_t[]) = 0
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) = 0
|
OR
|
||||||
OR t.title_status = ANY('title_statuses'::title_status_t[])
|
t.title_status = ANY(sqlc.arg('title_statuses')::title_status_t[])
|
||||||
)
|
)
|
||||||
AND (
|
AND (
|
||||||
'usertitle_statuses'::title_status_t[] IS NULL
|
cardinality(sqlc.arg('usertitle_statuses')::usertitle_status_t[]) = 0
|
||||||
OR array_length('usertitle_statuses'::title_status_t[], 1) IS NULL
|
OR
|
||||||
OR array_length('usertitle_statuses'::title_status_t[], 1) = 0
|
u.status = ANY(sqlc.arg('usertitle_statuses')::usertitle_status_t[])
|
||||||
OR t.title_status = ANY('usertitle_statuses'::title_status_t[])
|
|
||||||
)
|
)
|
||||||
AND (sqlc.narg('rate')::int IS NULL OR u.rate >= sqlc.narg('rate')::int)
|
AND (sqlc.narg('rate')::int IS NULL OR u.rate >= sqlc.narg('rate')::int)
|
||||||
AND (sqlc.narg('rating')::float IS NULL OR t.rating >= sqlc.narg('rating')::float)
|
AND (sqlc.narg('rating')::float IS NULL OR t.rating >= sqlc.narg('rating')::float)
|
||||||
|
|
|
||||||
|
|
@ -434,14 +434,15 @@ WHERE
|
||||||
)
|
)
|
||||||
|
|
||||||
AND (
|
AND (
|
||||||
'title_statuses'::title_status_t[] IS NULL
|
-- Если массив пуст (NULL или []) — не фильтруем
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) IS NULL
|
cardinality($7::title_status_t[]) = 0
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) = 0
|
OR
|
||||||
OR t.title_status = ANY('title_statuses'::title_status_t[])
|
-- Иначе: статус есть в списке
|
||||||
)
|
t.title_status = ANY($7::title_status_t[])
|
||||||
AND ($7::float IS NULL OR t.rating >= $7::float)
|
)
|
||||||
AND ($8::int IS NULL OR t.release_year = $8::int)
|
AND ($8::float IS NULL OR t.rating >= $8::float)
|
||||||
AND ($9::release_season_t IS NULL OR t.release_season = $9::release_season_t)
|
AND ($9::int IS NULL OR t.release_year = $9::int)
|
||||||
|
AND ($10::release_season_t IS NULL OR t.release_season = $10::release_season_t)
|
||||||
|
|
||||||
GROUP BY
|
GROUP BY
|
||||||
t.id, i.id, s.id
|
t.id, i.id, s.id
|
||||||
|
|
@ -464,7 +465,7 @@ ORDER BY
|
||||||
|
|
||||||
CASE WHEN $2::text <> 'id' THEN t.id END ASC
|
CASE WHEN $2::text <> 'id' THEN t.id END ASC
|
||||||
|
|
||||||
LIMIT COALESCE($10::int, 100)
|
LIMIT COALESCE($11::int, 100)
|
||||||
`
|
`
|
||||||
|
|
||||||
type SearchTitlesParams struct {
|
type SearchTitlesParams struct {
|
||||||
|
|
@ -474,6 +475,7 @@ type SearchTitlesParams struct {
|
||||||
CursorID *int64 `json:"cursor_id"`
|
CursorID *int64 `json:"cursor_id"`
|
||||||
CursorRating *float64 `json:"cursor_rating"`
|
CursorRating *float64 `json:"cursor_rating"`
|
||||||
Word *string `json:"word"`
|
Word *string `json:"word"`
|
||||||
|
TitleStatuses []TitleStatusT `json:"title_statuses"`
|
||||||
Rating *float64 `json:"rating"`
|
Rating *float64 `json:"rating"`
|
||||||
ReleaseYear *int32 `json:"release_year"`
|
ReleaseYear *int32 `json:"release_year"`
|
||||||
ReleaseSeason *ReleaseSeasonT `json:"release_season"`
|
ReleaseSeason *ReleaseSeasonT `json:"release_season"`
|
||||||
|
|
@ -506,6 +508,7 @@ func (q *Queries) SearchTitles(ctx context.Context, arg SearchTitlesParams) ([]S
|
||||||
arg.CursorID,
|
arg.CursorID,
|
||||||
arg.CursorRating,
|
arg.CursorRating,
|
||||||
arg.Word,
|
arg.Word,
|
||||||
|
arg.TitleStatuses,
|
||||||
arg.Rating,
|
arg.Rating,
|
||||||
arg.ReleaseYear,
|
arg.ReleaseYear,
|
||||||
arg.ReleaseSeason,
|
arg.ReleaseSeason,
|
||||||
|
|
@ -646,21 +649,20 @@ WHERE
|
||||||
)
|
)
|
||||||
|
|
||||||
AND (
|
AND (
|
||||||
'title_statuses'::title_status_t[] IS NULL
|
-- Если массив пуст (NULL или []) — не фильтруем
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) IS NULL
|
cardinality($7::title_status_t[]) = 0
|
||||||
OR array_length('title_statuses'::title_status_t[], 1) = 0
|
OR
|
||||||
OR t.title_status = ANY('title_statuses'::title_status_t[])
|
t.title_status = ANY($7::title_status_t[])
|
||||||
)
|
)
|
||||||
AND (
|
AND (
|
||||||
'usertitle_statuses'::title_status_t[] IS NULL
|
cardinality($8::usertitle_status_t[]) = 0
|
||||||
OR array_length('usertitle_statuses'::title_status_t[], 1) IS NULL
|
OR
|
||||||
OR array_length('usertitle_statuses'::title_status_t[], 1) = 0
|
u.status = ANY($8::usertitle_status_t[])
|
||||||
OR t.title_status = ANY('usertitle_statuses'::title_status_t[])
|
|
||||||
)
|
)
|
||||||
AND ($7::int IS NULL OR u.rate >= $7::int)
|
AND ($9::int IS NULL OR u.rate >= $9::int)
|
||||||
AND ($8::float IS NULL OR t.rating >= $8::float)
|
AND ($10::float IS NULL OR t.rating >= $10::float)
|
||||||
AND ($9::int IS NULL OR t.release_year = $9::int)
|
AND ($11::int IS NULL OR t.release_year = $11::int)
|
||||||
AND ($10::release_season_t IS NULL OR t.release_season = $10::release_season_t)
|
AND ($12::release_season_t IS NULL OR t.release_season = $12::release_season_t)
|
||||||
|
|
||||||
GROUP BY
|
GROUP BY
|
||||||
t.id, i.id, s.id
|
t.id, i.id, s.id
|
||||||
|
|
@ -685,21 +687,23 @@ ORDER BY
|
||||||
|
|
||||||
CASE WHEN $2::text <> 'id' THEN t.id END ASC
|
CASE WHEN $2::text <> 'id' THEN t.id END ASC
|
||||||
|
|
||||||
LIMIT COALESCE($11::int, 100)
|
LIMIT COALESCE($13::int, 100)
|
||||||
`
|
`
|
||||||
|
|
||||||
type SearchUserTitlesParams struct {
|
type SearchUserTitlesParams struct {
|
||||||
Forward bool `json:"forward"`
|
Forward bool `json:"forward"`
|
||||||
SortBy string `json:"sort_by"`
|
SortBy string `json:"sort_by"`
|
||||||
CursorYear *int32 `json:"cursor_year"`
|
CursorYear *int32 `json:"cursor_year"`
|
||||||
CursorID *int64 `json:"cursor_id"`
|
CursorID *int64 `json:"cursor_id"`
|
||||||
CursorRating *float64 `json:"cursor_rating"`
|
CursorRating *float64 `json:"cursor_rating"`
|
||||||
Word *string `json:"word"`
|
Word *string `json:"word"`
|
||||||
Rate *int32 `json:"rate"`
|
TitleStatuses []TitleStatusT `json:"title_statuses"`
|
||||||
Rating *float64 `json:"rating"`
|
UsertitleStatuses []UsertitleStatusT `json:"usertitle_statuses"`
|
||||||
ReleaseYear *int32 `json:"release_year"`
|
Rate *int32 `json:"rate"`
|
||||||
ReleaseSeason *ReleaseSeasonT `json:"release_season"`
|
Rating *float64 `json:"rating"`
|
||||||
Limit *int32 `json:"limit"`
|
ReleaseYear *int32 `json:"release_year"`
|
||||||
|
ReleaseSeason *ReleaseSeasonT `json:"release_season"`
|
||||||
|
Limit *int32 `json:"limit"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SearchUserTitlesRow struct {
|
type SearchUserTitlesRow struct {
|
||||||
|
|
@ -734,6 +738,8 @@ func (q *Queries) SearchUserTitles(ctx context.Context, arg SearchUserTitlesPara
|
||||||
arg.CursorID,
|
arg.CursorID,
|
||||||
arg.CursorRating,
|
arg.CursorRating,
|
||||||
arg.Word,
|
arg.Word,
|
||||||
|
arg.TitleStatuses,
|
||||||
|
arg.UsertitleStatuses,
|
||||||
arg.Rate,
|
arg.Rate,
|
||||||
arg.Rating,
|
arg.Rating,
|
||||||
arg.ReleaseYear,
|
arg.ReleaseYear,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue