add search by terms on posts

This commit is contained in:
João Victor Geonizeli
2022-02-28 13:45:28 -03:00
parent aa0e1ac1c7
commit a08a889e7d
5 changed files with 16 additions and 8 deletions

View File

@@ -2,11 +2,12 @@ source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby "3.1.1"
gem "rails", "~> 7.0.2", ">= 7.0.2.2"
gem "pg", "~> 1.1"
gem "puma", "~> 5.0"
gem "jbuilder"
gem "pg_search", "~> 2.3"
gem "bootsnap", require: false
group :development, :test do
@@ -14,6 +15,5 @@ group :development, :test do
gem "rspec-rails", "~> 5.1"
gem "factory_bot_rails", "~> 6.2"
gem "faker", "~> 2.19"
end
gem "faker", "~> 2.19"

View File

@@ -124,6 +124,9 @@ GEM
nokogiri (1.13.3-x86_64-linux)
racc (~> 1.4)
pg (1.3.3)
pg_search (2.3.6)
activerecord (>= 5.2)
activesupport (>= 5.2)
puma (5.6.2)
nio4r (~> 2.0)
racc (1.6.0)
@@ -196,6 +199,7 @@ DEPENDENCIES
faker (~> 2.19)
jbuilder
pg (~> 1.1)
pg_search (~> 2.3)
puma (~> 5.0)
rails (~> 7.0.2, >= 7.0.2.2)
rspec-rails (~> 5.1)

View File

@@ -29,7 +29,7 @@ class PostsController < ApplicationController
private
def query_params
params.permit(:scope) || {}
params.permit(:scope, :terms)
end
def post_params

View File

@@ -1,15 +1,15 @@
class Post < ApplicationRecord
include PgSearch::Model
belongs_to :user
belongs_to :quoted_post, optional: true, class_name: 'Post'
validates :content, length: { maximum: 777 }
validates :content, presence: true, unless: :repost?
validate :user, :limit_of_post_per_day
scope :by_user_follows, ->(user) {
where(user_id: user.following_ids)
}
pg_search_scope :by_terms, against: :content
scope :by_user_follows, ->(user) { where(user_id: user.following_ids) }
def repost?
kind == :quoted_post

View File

@@ -17,6 +17,10 @@ class PostsQueryResolverService
scope = scope.by_user_follows(current_user)
end
if filter[:terms]
scope = scope.by_terms(filter[:terms])
end
scope
end
end