From c4df79dffa95fdc451735c1caf60529590cf9319 Mon Sep 17 00:00:00 2001 From: lbenedar Date: Wed, 18 Mar 2026 17:29:42 +0300 Subject: [PATCH] ch9.5 --- internal/data/movies.go | 4 +++- migrations/000003_add_movies_indexes.down.sql | 2 ++ migrations/000003_add_movies_indexes.up.sql | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 migrations/000003_add_movies_indexes.down.sql create mode 100644 migrations/000003_add_movies_indexes.up.sql diff --git a/internal/data/movies.go b/internal/data/movies.go index 9321e97..ca2a50e 100644 --- a/internal/data/movies.go +++ b/internal/data/movies.go @@ -138,12 +138,14 @@ func (m MovieModel) GetAll(title string, genres []string, filter Filters) ([]*Mo query := ` SELECT id, created_at, title, year, runtime, genres, version FROM movies + WHERE (to_tsvector('simple', title) @@ plainto_tsquery('simple', $1) OR $1 = '') + AND (genres @> $2 OR $2 = '{}') ORDER BY id` ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() - rows, err := m.DB.QueryContext(ctx, query) + rows, err := m.DB.QueryContext(ctx, query, title, pq.Array(genres)) if err != nil { return nil, err } diff --git a/migrations/000003_add_movies_indexes.down.sql b/migrations/000003_add_movies_indexes.down.sql new file mode 100644 index 0000000..0fd0992 --- /dev/null +++ b/migrations/000003_add_movies_indexes.down.sql @@ -0,0 +1,2 @@ +DROP INDEX IF EXISTS movies_title_idx; +DROP INDEX IF EXISTS movies_genres_idx; \ No newline at end of file diff --git a/migrations/000003_add_movies_indexes.up.sql b/migrations/000003_add_movies_indexes.up.sql new file mode 100644 index 0000000..3cd6687 --- /dev/null +++ b/migrations/000003_add_movies_indexes.up.sql @@ -0,0 +1,2 @@ +CREATE INDEX IF NOT EXISTS movies_title_idx ON movies USING GIN (to_tsvector('simple', title)); +CREATE INDEX IF NOT EXISTS movies_genres_idx ON movies USING GIN (genres);