qiita-elasticsearch 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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