Class: Relaxo::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/relaxo/session.rb,
lib/relaxo/database.rb

Instance Method Summary collapse

Constructor Details

#initialize(database) ⇒ Session

Returns a new instance of Session.



46
47
48
49
50
51
# File 'lib/relaxo/session.rb', line 46

def initialize(database)
	@database = database
	
	@documents = []
	@uuids = []
end

Instance Method Details

#abort!Object



108
109
110
# File 'lib/relaxo/session.rb', line 108

def abort!
	throw :abort
end

#commit!Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/relaxo/session.rb', line 82

def commit!
	#puts "Commiting session:"
	#puts YAML::dump(@documents)
	
	changed = []
	
	unless @documents.empty?
		results = @database.bulk_save @documents
		
		# Update the documents with revision information:
		@documents.each_with_index do |document, index|
			status = results[index]
			
			if status['ok']
				document[ID] = status['id']
				document[REV] = status['rev']
			end
		end
		
		changed = @documents
		@documents = []
	end
	
	return changed
end

#delete(document) ⇒ Object



57
58
59
# File 'lib/relaxo/session.rb', line 57

def delete(document)
	@documents << {:_deleted => true}.merge(document)
end

#get(*args) ⇒ Object



53
54
55
# File 'lib/relaxo/session.rb', line 53

def get(*args)
	@database.get(*args)
end

#save(document) ⇒ Object



61
62
63
64
65
66
67
68
69
70
# File 'lib/relaxo/session.rb', line 61

def save(document)
	Relaxo::encode_attachments!(document)
	
	@documents << document
	
	# We assume the save operation will be successful:
	unless document.key? ID
		@uuids << (document[ID] = @database.connection.next_uuid)
	end
end

#session(klass) {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



72
73
74
75
76
# File 'lib/relaxo/session.rb', line 72

def session(klass)
	yield self
	
	klass.new(self, @documents.last)
end

#view(*args) ⇒ Object



78
79
80
# File 'lib/relaxo/session.rb', line 78

def view(*args)
	@database.view(*args)
end