diff --git a/modules/backend/queries.sql b/modules/backend/queries.sql index 9734ff2..1d5cc45 100644 --- a/modules/backend/queries.sql +++ b/modules/backend/queries.sql @@ -194,10 +194,10 @@ WHERE AND ( -- Если массив пуст (NULL или []) — не фильтруем - cardinality(sqlc.arg('title_statuses')::text[]) = 0 + cardinality(sqlc.arg('title_statuses')::title_status_t[]) = 0 OR -- Иначе: статус есть в списке - t.title_status = ANY(sqlc.arg('title_statuses')::text[]) + 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('release_year')::int IS NULL OR t.release_year = sqlc.narg('release_year')::int) @@ -327,14 +327,14 @@ WHERE AND ( -- Если массив пуст (NULL или []) — не фильтруем - cardinality(sqlc.arg('title_statuses')::text[]) = 0 + cardinality(sqlc.arg('title_statuses')::title_status_t[]) = 0 OR - t.title_status = ANY(sqlc.arg('title_statuses')::text[]) + t.title_status = ANY(sqlc.arg('title_statuses')::title_status_t[]) ) AND ( - cardinality(sqlc.arg('usertitle_statuses')::text[]) = 0 + cardinality(sqlc.arg('usertitle_statuses')::usertitle_status_t[]) = 0 OR - u.status = ANY(sqlc.arg('usertitle_statuses')::text[]) + u.status = ANY(sqlc.arg('usertitle_statuses')::usertitle_status_t[]) ) 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) diff --git a/sql/queries.sql.go b/sql/queries.sql.go index f7535db..daa2875 100644 --- a/sql/queries.sql.go +++ b/sql/queries.sql.go @@ -435,10 +435,10 @@ WHERE AND ( -- Если массив пуст (NULL или []) — не фильтруем - cardinality($7::text[]) = 0 + cardinality($7::title_status_t[]) = 0 OR -- Иначе: статус есть в списке - t.title_status = ANY($7::text[]) + t.title_status = ANY($7::title_status_t[]) ) AND ($8::float IS NULL OR t.rating >= $8::float) AND ($9::int IS NULL OR t.release_year = $9::int) @@ -475,7 +475,7 @@ type SearchTitlesParams struct { CursorID *int64 `json:"cursor_id"` CursorRating *float64 `json:"cursor_rating"` Word *string `json:"word"` - TitleStatuses []string `json:"title_statuses"` + TitleStatuses []TitleStatusT `json:"title_statuses"` Rating *float64 `json:"rating"` ReleaseYear *int32 `json:"release_year"` ReleaseSeason *ReleaseSeasonT `json:"release_season"` @@ -575,12 +575,12 @@ SELECT )::jsonb as tag_names, s.studio_name as studio_name -FROM usertitles as u -JOIN titles as t ON (u.title_id = t.id) -LEFT JOIN images as i ON (t.poster_id = i.id) -LEFT JOIN title_tags as tt ON (t.id = tt.title_id) -LEFT JOIN tags as g ON (tt.tag_id = g.id) -LEFT JOIN studios as s ON (t.studio_id = s.id) +FROM usertitles as u +JOIN titles as t ON (u.title_id = t.id) +LEFT JOIN images as i ON (t.poster_id = i.id) +LEFT JOIN title_tags as tt ON (t.id = tt.title_id) +LEFT JOIN tags as g ON (tt.tag_id = g.id) +LEFT JOIN studios as s ON (t.studio_id = s.id) WHERE CASE @@ -650,14 +650,14 @@ WHERE AND ( -- Если массив пуст (NULL или []) — не фильтруем - cardinality($7::text[]) = 0 + cardinality($7::title_status_t[]) = 0 OR - t.title_status = ANY($7::text[]) + t.title_status = ANY($7::title_status_t[]) ) AND ( - cardinality($8::text[]) = 0 + cardinality($8::usertitle_status_t[]) = 0 OR - u.status = ANY($8::text[]) + u.status = ANY($8::usertitle_status_t[]) ) AND ($9::int IS NULL OR u.rate >= $9::int) AND ($10::float IS NULL OR t.rating >= $10::float) @@ -691,19 +691,19 @@ LIMIT COALESCE($13::int, 100) ` type SearchUserTitlesParams struct { - Forward bool `json:"forward"` - SortBy string `json:"sort_by"` - CursorYear *int32 `json:"cursor_year"` - CursorID *int64 `json:"cursor_id"` - CursorRating *float64 `json:"cursor_rating"` - Word *string `json:"word"` - TitleStatuses []string `json:"title_statuses"` - UsertitleStatuses []string `json:"usertitle_statuses"` - Rate *int32 `json:"rate"` - Rating *float64 `json:"rating"` - ReleaseYear *int32 `json:"release_year"` - ReleaseSeason *ReleaseSeasonT `json:"release_season"` - Limit *int32 `json:"limit"` + Forward bool `json:"forward"` + SortBy string `json:"sort_by"` + CursorYear *int32 `json:"cursor_year"` + CursorID *int64 `json:"cursor_id"` + CursorRating *float64 `json:"cursor_rating"` + Word *string `json:"word"` + TitleStatuses []TitleStatusT `json:"title_statuses"` + UsertitleStatuses []UsertitleStatusT `json:"usertitle_statuses"` + Rate *int32 `json:"rate"` + Rating *float64 `json:"rating"` + ReleaseYear *int32 `json:"release_year"` + ReleaseSeason *ReleaseSeasonT `json:"release_season"` + Limit *int32 `json:"limit"` } type SearchUserTitlesRow struct {