Class: Sunspot::SessionProxy::ClassShardingSessionProxy

Inherits:
ShardingSessionProxy show all
Defined in:
lib/sunspot/session_proxy/class_sharding_session_proxy.rb

Overview

An abstract subclass of ShardingSessionProxy that shards by class. Concrete subclasses should not override the #session_for method, but should instead implement the #session_for_class method. They must also still implement the #all_sessions method.

Unlike its parent class, ClassShardingSessionProxy implements #remove_by_id and all flavors of #remove_all.

Instance Method Summary collapse

Methods inherited from ShardingSessionProxy

#all_sessions, #commit, #commit_if_delete_dirty, #commit_if_dirty, #delete_dirty?, #dirty?, #index, #index!, #initialize, #more_like_this, #new_more_like_this, #new_search, #optimize, #remove, #remove!, #search

Methods inherited from AbstractSessionProxy

delegate, not_supported

Constructor Details

This class inherits a constructor from Sunspot::SessionProxy::ShardingSessionProxy

Instance Method Details

#remove_all(clazz = nil) ⇒ Object

See Sunspot.remove_all



42
43
44
45
46
47
48
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 42

def remove_all(clazz = nil)
  if clazz
    session_for_class(clazz).remove_all(clazz)
  else
    all_sessions.each { |session| session.remove_all }
  end
end

#remove_all!(clazz = nil) ⇒ Object

See Sunspot.remove_all!



53
54
55
56
57
58
59
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 53

def remove_all!(clazz = nil)
  if clazz
    session_for_class(clazz).remove_all!(clazz)
  else
    all_sessions.each { |session| session.remove_all! }
  end
end

#remove_by_id(clazz, *ids) ⇒ Object

See Sunspot.remove_by_id



26
27
28
29
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 26

def remove_by_id(clazz, *ids)
  ids.flatten!
  session_for_class(clazz).remove_by_id(clazz, ids)
end

#remove_by_id!(clazz, *ids) ⇒ Object

See Sunspot.remove_by_id!



34
35
36
37
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 34

def remove_by_id!(clazz, *ids)
  ids.flatten!
  session_for_class(clazz).remove_by_id!(clazz, ids)
end

#session_for_class(clazz) ⇒ Object

Remove the Session object pointing at the shard that indexes the given class.

<strong>Concrete subclasses must implement this method.</strong>



19
20
21
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 19

def session_for_class(clazz)
  raise NotImplementedError
end