qiita-elasticsearch 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a225c93fa93597ae9e657f831c78634f62e9711
4
- data.tar.gz: ddb1511db2dfbab4acee9620923122be71cdfd23
3
+ metadata.gz: 2401f130b8898fe667da24ced430b7a6b27ebf3b
4
+ data.tar.gz: 9e8f3e9749b77ae32765f1c8837cb5ea796584da
5
5
  SHA512:
6
- metadata.gz: 5c40b70ba9228a3bd8ae4b7fcdb6844855b9bf82ff5b5d64ca54af4d5b7a25d244abb915818b15a67ca1a33e0aa0a3c4572ffa24f60b7c0850ede6d43acab1a3
7
- data.tar.gz: 083a96e045dc6aa7ca897a7b3bb03e6bdc7fe45f8f22ed08326cd07416bb2f64790067af47613bca271abc4f06be6327c1e0e6d15e6c5c0ec1b4ff24b3f42db3
6
+ metadata.gz: e560c3b18f170169dec4d93e3a3570ad02cbb95eec3f43540b010f92123729c4b26d74aa00490472b0728371280e9718645a8adabcebf97382755f93825f108a
7
+ data.tar.gz: e7bc6318e4a946680004adedffe1d294bb5e4fa090be530bd1ba36c5304a42b515b65dedc5db0ae557b029d7ac107cb8ad5c1ccf16184c7253a9153585d65b08
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.7.0
2
+ - Support `is:coediting` query
3
+ - Change default sort order with created-desc
4
+ - Improve some filter options and Query methods
5
+
1
6
  ## 0.6.0
2
7
  - Change `Query#to_hash` behavior and support sort option
3
8
 
@@ -3,13 +3,23 @@ require "qiita/elasticsearch/token"
3
3
  module Qiita
4
4
  module Elasticsearch
5
5
  class FilterableToken < Token
6
+ EDIT_PERMISSION_COEDITING = 2
7
+
6
8
  # @return [Hash]
7
9
  def to_hash
8
- {
9
- "term" => {
10
- @field_name => proper_cased_term,
11
- },
12
- }
10
+ if field_name == "is" && term == "coediting"
11
+ {
12
+ "term" => {
13
+ "edit_permission" => EDIT_PERMISSION_COEDITING,
14
+ },
15
+ }
16
+ else
17
+ {
18
+ "term" => {
19
+ @field_name => proper_cased_term,
20
+ },
21
+ }
22
+ end
13
23
  end
14
24
  end
15
25
  end
@@ -6,7 +6,7 @@ require "qiita/elasticsearch/tokenizer"
6
6
  module Qiita
7
7
  module Elasticsearch
8
8
  class Query
9
- DEFAULT_SORT = ["_score"]
9
+ DEFAULT_SORT = [{ "created_at" => "desc" }, "_score"]
10
10
 
11
11
  # @param [Array<Qiita::Elasticsearch::Token>] tokens
12
12
  # @param [Hash] query_builder_options For building new query from this query
@@ -20,7 +20,11 @@ module Qiita
20
20
  # @return [Qiita::Elasticsearch::Query]
21
21
  # @example query.append_field_token(field_name: "tag", term: "Ruby")
22
22
  def append_field_token(field_name: nil, term: nil)
23
- build_query([*@tokens, "#{field_name}:#{term}"].join(" "))
23
+ if has_field_token?(field_name: field_name, term: term)
24
+ self
25
+ else
26
+ build_query([*@tokens, "#{field_name}:#{term}"].join(" "))
27
+ end
24
28
  end
25
29
 
26
30
  # @param [String] field_name
@@ -30,7 +34,7 @@ module Qiita
30
34
  def delete_field_token(field_name: nil, term: nil)
31
35
  build_query(
32
36
  @tokens.reject do |token|
33
- token.field_name == field_name && token.term == term
37
+ (field_name.nil? || token.field_name == field_name) && (term.nil? || token.term == term)
34
38
  end.join(" ")
35
39
  )
36
40
  end
@@ -40,7 +44,7 @@ module Qiita
40
44
  # @example query.has_field_token?(field_name: "tag", term: "Ruby")
41
45
  def has_field_token?(field_name: nil, term: nil)
42
46
  @tokens.any? do |token|
43
- token.field_name == field_name && token.term == term
47
+ (field_name.nil? || token.field_name == field_name) && (term.nil? || token.term == term)
44
48
  end
45
49
  end
46
50
 
@@ -58,9 +62,9 @@ module Qiita
58
62
  case @tokens.select(&:sort?).last.try(:term)
59
63
  when "created-asc"
60
64
  [{ "created_at" => "asc" }, "_score"]
61
- when "created-desc"
62
- [{ "created_at" => "desc" }, "_score"]
63
65
  when "related-asc"
66
+ ["_score"]
67
+ when "related-desc"
64
68
  [{ "_score" => "desc" }]
65
69
  when "stocks-asc"
66
70
  [{ "stocks" => "asc" }, "_score"]
@@ -12,6 +12,7 @@ module Qiita
12
12
  DEFAULT_FILTERABLE_FIELDS = []
13
13
  DEFAULT_HIERARCHAL_FIELDS = []
14
14
  DEFAULT_INT_FIELDS = []
15
+ EXTRA_FILTERABLE_FIELDS = ["is", "sort"]
15
16
 
16
17
  TOKEN_PATTERN = /
17
18
  (?<token_string>
@@ -76,7 +77,7 @@ module Qiita
76
77
  end
77
78
 
78
79
  def filterable_fields
79
- @filterable_fields || DEFAULT_FILTERABLE_FIELDS
80
+ (@filterable_fields || DEFAULT_FILTERABLE_FIELDS) | EXTRA_FILTERABLE_FIELDS
80
81
  end
81
82
 
82
83
  def hierarchal_fields
@@ -1,5 +1,5 @@
1
1
  module Qiita
2
2
  module Elasticsearch
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura