Module: Sequel::Mapper
- Extended by:
- Forwardable
- Defined in:
- lib/sequel/mapper.rb,
lib/sequel/mapper/struct.rb,
lib/sequel/mapper/version.rb
Defined Under Namespace
Modules: ClassMethods
Classes: Struct
Constant Summary
collapse
- VERSION =
"0.2.2"
Instance Attribute Summary collapse
Instance Method Summary
collapse
Instance Attribute Details
#dataset ⇒ Object
Returns the value of attribute dataset.
26
27
28
|
# File 'lib/sequel/mapper.rb', line 26
def dataset
@dataset
end
|
Instance Method Details
#create(object) ⇒ Object
28
29
30
31
|
# File 'lib/sequel/mapper.rb', line 28
def create(object)
id = dataset.insert object_to_data(object)
object.send("#{primary_key}=", id) unless object.public_send(primary_key)
end
|
#delete(object) ⇒ Object
42
43
44
|
# File 'lib/sequel/mapper.rb', line 42
def delete(object)
find_object(object).delete
end
|
#find(key) ⇒ Object
Also known as:
[]
33
34
35
|
# File 'lib/sequel/mapper.rb', line 33
def find(key)
find_object(key: key).first
end
|
#graph(*args) ⇒ Object
63
64
65
|
# File 'lib/sequel/mapper.rb', line 63
def graph(*args)
scope dataset.extension(:graph_each).graph(*args)
end
|
#initialize(options) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/sequel/mapper.rb', line 10
def initialize(options)
if options.is_a? Sequel::Dataset
@db = options.db
@dataset = options.clone
elsif options.is_a? Sequel::Database
@db = options
raise ArgumentError, 'no dataset defined' if self.class._dataset.nil?
@dataset = db[self.class._dataset]
else
raise ArgumentError, 'no database or dataset'
end
@dataset.row_proc = method(:data_to_object)
@model = self.class._model || Sequel::Mapper::Struct.new(*dataset.columns)
@primary_key = self.class._primary_key || :id
end
|
#persist(object) ⇒ Object
46
47
48
49
50
51
52
|
# File 'lib/sequel/mapper.rb', line 46
def persist(object)
if find_object(object).nil?
create(object)
else
update(object)
end
end
|
#update(object) ⇒ Object
38
39
40
|
# File 'lib/sequel/mapper.rb', line 38
def update(object)
find_object(object).update(object_to_data(object))
end
|
#with(mapper_class, join, options = {}) ⇒ Object
67
68
69
|
# File 'lib/sequel/mapper.rb', line 67
def with(mapper_class, join, options = {})
graph(dataset_for_mapper_class(mapper_class), join, options)
end
|