sequel-mapper 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/sequel/mapper/version.rb +1 -1
- data/lib/sequel/mapper.rb +15 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab1c4a2019aff0466ec0cfe35adf033128b1f78a
|
4
|
+
data.tar.gz: 2ed95328814c5f00ee9ac5f87423ec9adda8010e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55e7fba42eb573d628946b9d3171e909d98db3e41d41a73df7a25705b596e44a2f25b61a3a0b261de75cde7663d1dcf860bbde88d35803e47818704bd1d0782e
|
7
|
+
data.tar.gz: d3ae5e30713523f302eda4478f0a203194bb324a1513f04cda015f1de33c960e89803cf0cb14d78b89135778aee6b38ff699dcfe8261c6ad55140b67b1eb92ac
|
data/lib/sequel/mapper.rb
CHANGED
@@ -26,7 +26,7 @@ module Sequel
|
|
26
26
|
attr_reader :dataset
|
27
27
|
|
28
28
|
def create(object)
|
29
|
-
id = dataset.insert
|
29
|
+
id = dataset.insert object_to_data(object)
|
30
30
|
object.send("#{primary_key}=", id) unless object.public_send(primary_key)
|
31
31
|
end
|
32
32
|
|
@@ -43,7 +43,7 @@ module Sequel
|
|
43
43
|
find_object(object).delete
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
46
|
+
def persist(object)
|
47
47
|
if find_object(object).nil?
|
48
48
|
create(object)
|
49
49
|
else
|
@@ -64,21 +64,23 @@ module Sequel
|
|
64
64
|
scope dataset.extension(:graph_each).graph(*args)
|
65
65
|
end
|
66
66
|
|
67
|
+
def with(mapper_class, join, options = {})
|
68
|
+
graph(dataset_for_mapper_class(mapper_class), join, options)
|
69
|
+
end
|
70
|
+
|
67
71
|
private
|
68
72
|
|
69
73
|
attr_reader :db, :model, :primary_key
|
70
74
|
|
71
75
|
def object_to_data(object)
|
72
|
-
dataset.columns.
|
73
|
-
|
74
|
-
|
76
|
+
dataset.columns.each_with_object({}) do |column, data|
|
77
|
+
if object.respond_to?(column)
|
78
|
+
value = object.public_send(column)
|
79
|
+
data[column] = value unless value.nil?
|
80
|
+
end
|
75
81
|
end
|
76
82
|
end
|
77
83
|
|
78
|
-
def create_data(object)
|
79
|
-
object_to_data(object).delete_if { |k, v| v.to_s.strip == '' }
|
80
|
-
end
|
81
|
-
|
82
84
|
def data_to_object(data)
|
83
85
|
model.new data
|
84
86
|
end
|
@@ -95,6 +97,10 @@ module Sequel
|
|
95
97
|
self.class.new(dataset)
|
96
98
|
end
|
97
99
|
|
100
|
+
def dataset_for_mapper_class(mapper_class)
|
101
|
+
mapper_class.new(db).dataset
|
102
|
+
end
|
103
|
+
|
98
104
|
module ClassMethods
|
99
105
|
def model(model)
|
100
106
|
@_model = model
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve England
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|