Class: Realm::Elasticsearch::Repository
- Inherits:
-
Object
- Object
- Realm::Elasticsearch::Repository
- Defined in:
- lib/realm/elasticsearch/repository.rb
Class Method Summary collapse
Instance Method Summary collapse
- #all ⇒ Object
- #create(id: nil, **attrs) ⇒ Object
- #delete(id:) ⇒ Object
- #delete_by(params) ⇒ Object
- #find(id:) ⇒ Object
-
#initialize(client) ⇒ Repository
constructor
A new instance of Repository.
- #raw_search(yaml: nil, options: {}, **body) ⇒ Object
- #raw_update(id, body = {}) ⇒ Object
- #search_by(params) ⇒ Object
- #truncate! ⇒ Object
- #update(id:, **attrs) ⇒ Object
- #upsert(id:, **attrs) ⇒ Object
Constructor Details
#initialize(client) ⇒ Repository
Returns a new instance of Repository.
21 22 23 |
# File 'lib/realm/elasticsearch/repository.rb', line 21 def initialize(client) @client = client end |
Class Method Details
.index_name(value = :not_provided) ⇒ Object
15 16 17 18 19 |
# File 'lib/realm/elasticsearch/repository.rb', line 15 def self.index_name(value = :not_provided) @index_name = value.to_sym unless value == :not_provided @index_name = repo_name.pluralize unless defined?(@index_name) @index_name end |
.repo_name(value = :not_provided) ⇒ Object
9 10 11 12 13 |
# File 'lib/realm/elasticsearch/repository.rb', line 9 def self.repo_name(value = :not_provided) @repo_name = value.to_sym unless value == :not_provided @repo_name = name.demodulize.underscore unless defined?(@repo_name) @repo_name end |
Instance Method Details
#all ⇒ Object
31 32 33 |
# File 'lib/realm/elasticsearch/repository.rb', line 31 def all multiple(raw_search(query: { match_all: {} })) end |
#create(id: nil, **attrs) ⇒ Object
35 36 37 38 39 |
# File 'lib/realm/elasticsearch/repository.rb', line 35 def create(id: nil, **attrs) client.index(index: index_name, type: '_doc', id: id, body: attrs, refresh: refresh?) rescue ::Elasticsearch::Transport::Transport::Errors::Conflict raise Realm::Persistence::Conflict end |
#delete(id:) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/realm/elasticsearch/repository.rb', line 49 def delete(id:) client.delete(index: index_name, type: '_doc', id: id, refresh: refresh?) true rescue ::Elasticsearch::Transport::Transport::Errors::NotFound false end |
#delete_by(params) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/realm/elasticsearch/repository.rb', line 60 def delete_by(params) client.delete_by_query( index: index_name, refresh: refresh?, body: { query: { bool: { must: match_params(params), }, } }, ) end |
#find(id:) ⇒ Object
25 26 27 28 29 |
# File 'lib/realm/elasticsearch/repository.rb', line 25 def find(id:) single(client.get(index: index_name, id: id)) rescue ::Elasticsearch::Transport::Transport::Errors::NotFound nil end |
#raw_search(yaml: nil, options: {}, **body) ⇒ Object
76 77 78 |
# File 'lib/realm/elasticsearch/repository.rb', line 76 def raw_search(yaml: nil, options: {}, **body) client.search(index: index_name, body: yaml ? YAML.safe_load(yaml) : body, **) end |
#raw_update(id, body = {}) ⇒ Object
72 73 74 |
# File 'lib/realm/elasticsearch/repository.rb', line 72 def raw_update(id, body = {}) client.update(index: index_name, type: '_doc', id: id, body: body, refresh: refresh?) end |
#search_by(params) ⇒ Object
56 57 58 |
# File 'lib/realm/elasticsearch/repository.rb', line 56 def search_by(params) multiple(raw_search(query: { bool: { must: match_params(params) } })) end |
#truncate! ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'lib/realm/elasticsearch/repository.rb', line 80 def truncate! client.delete_by_query( index: index_name, body: { query: { match_all: {} } }, conflicts: 'proceed', refresh: refresh?, ) end |
#update(id:, **attrs) ⇒ Object
41 42 43 |
# File 'lib/realm/elasticsearch/repository.rb', line 41 def update(id:, **attrs) raw_update(id, doc: attrs) end |
#upsert(id:, **attrs) ⇒ Object
45 46 47 |
# File 'lib/realm/elasticsearch/repository.rb', line 45 def upsert(id:, **attrs) raw_update(id, doc: attrs, doc_as_upsert: true) end |