Class: Noiseless::DocumentManager

Inherits:
Object
  • Object
show all
Defined in:
lib/noiseless/document_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(model_instance, connection: nil) ⇒ DocumentManager

Returns a new instance of DocumentManager.



5
6
7
8
# File 'lib/noiseless/document_manager.rb', line 5

def initialize(model_instance, connection: nil)
  @model_instance = model_instance
  @connection = connection || model_instance.class.connection
end

Instance Method Details

#delete_document(refresh: false) ⇒ Object



45
46
47
48
49
50
51
52
53
# File 'lib/noiseless/document_manager.rb', line 45

def delete_document(refresh: false, **)
  client = Noiseless.connections.client(@connection)
  client.delete_document(
    index: index_name,
    id: document_id,
    refresh: refresh,
    **
  )
end

#document_exists?Boolean

Returns:

  • (Boolean)


55
56
57
58
59
60
61
# File 'lib/noiseless/document_manager.rb', line 55

def document_exists?
  client = Noiseless.connections.client(@connection)
  client.document_exists?(
    index: index_name,
    id: document_id
  )
end

#index_document(refresh: false) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/noiseless/document_manager.rb', line 10

def index_document(refresh: false, **)
  document = build_document
  return false unless document

  client = Noiseless.connections.client(@connection)
  client.index_document(
    index: index_name,
    id: document_id,
    document: document,
    refresh: refresh,
    **
  )
end

#update_document(refresh: false, detect_changes: true) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/noiseless/document_manager.rb', line 24

def update_document(refresh: false, detect_changes: true, **)
  if detect_changes && supports_dirty_tracking?
    return false unless has_changes?

    changes = extract_changes
    return false if changes.empty?

    client = Noiseless.connections.client(@connection)
    client.update_document(
      index: index_name,
      id: document_id,
      changes: changes,
      refresh: refresh,
      **
    )
  else
    # Fall back to full document update
    index_document(refresh: refresh, **)
  end
end