From d9e5b94838292e98f91337d8e8af6565dc7e6b2a Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Thu, 23 Jan 2020 03:29:12 +0000 Subject: [PATCH 1/2] Added search for posts with the embedded flag enabled --- app/javascript/src/javascripts/autocomplete.js.erb | 4 ++++ app/logical/post_query_builder.rb | 6 ++++++ app/models/tag.rb | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/javascript/src/javascripts/autocomplete.js.erb b/app/javascript/src/javascripts/autocomplete.js.erb index 8375e2940..767955f2c 100644 --- a/app/javascript/src/javascripts/autocomplete.js.erb +++ b/app/javascript/src/javascripts/autocomplete.js.erb @@ -118,6 +118,7 @@ Autocomplete.initialize_tag_autocomplete = function() { case "parent": case "filetype": case "disapproval": + case "embedded": results = Autocomplete.static_metatag_source(term, metatag); break; case "user": @@ -272,6 +273,9 @@ Autocomplete.static_metatags = { locked: [ "rating", "note", "status" ], + embedded: [ + "true", "false" + ], child: [ "any", "none" ], diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 9ca5153c9..8a3ba0c58 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -440,6 +440,12 @@ class PostQueryBuilder relation = relation.where("posts.is_status_locked = FALSE") end + if q[:embedded] == "true" + relation = relation.bit_flags_match(:has_embedded_notes, true) + elsif q[:embedded] == "false" + relation = relation.bit_flags_match(:has_embedded_notes, false) + end + relation = add_tag_string_search_relation(q[:tags], relation) if q[:ordpool].present? diff --git a/app/models/tag.rb b/app/models/tag.rb index adfba0c30..2d25ddb3b 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -17,7 +17,7 @@ class Tag < ApplicationRecord -locked locked width height mpixels ratio score favcount filesize source -source id -id date age order limit -status status tagcount parent -parent child pixiv_id pixiv search upvote downvote filetype -filetype flagger - -flagger appealer -appealer disapproval -disapproval + -flagger appealer -appealer disapproval -disapproval embedded ] + TagCategory.short_name_list.map {|x| "#{x}tags"} + COUNT_METATAGS + COUNT_METATAG_SYNONYMS SUBQUERY_METATAGS = %w[commenter comm noter noteupdater artcomm flagger -flagger appealer -appealer] @@ -735,6 +735,9 @@ class Tag < ApplicationRecord when "status" q[:status] = g2.downcase + when "embedded" + q[:embedded] = g2.downcase + when "filetype" q[:filetype] = g2.downcase From 76082debf6dcb860addc9fb24aa3718d4c6184d6 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Thu, 23 Jan 2020 03:30:10 +0000 Subject: [PATCH 2/2] Fix has bit flags module query --- app/logical/danbooru/has_bit_flags.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/logical/danbooru/has_bit_flags.rb b/app/logical/danbooru/has_bit_flags.rb index b130e1cc6..a8330f330 100644 --- a/app/logical/danbooru/has_bit_flags.rb +++ b/app/logical/danbooru/has_bit_flags.rb @@ -32,7 +32,7 @@ module Danbooru bits = attributes.length bit_index = bits - attributes.index(flag.to_s) - 1 - where(sanitize_sql(["get_bit(bit_prefs::bit(?), ?) = ?", bits, bit_index, value])) + where(sanitize_sql(["get_bit(#{field}::bit(?), ?) = ?", bits, bit_index, value])) end end end