sequel-mapper 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a3c983fd6780b85282cbb200ffbb4f2cdf85849
4
- data.tar.gz: f4d3e29ced32055754643032d4edd83530ab613b
3
+ metadata.gz: ab1c4a2019aff0466ec0cfe35adf033128b1f78a
4
+ data.tar.gz: 2ed95328814c5f00ee9ac5f87423ec9adda8010e
5
5
  SHA512:
6
- metadata.gz: d23cf2c39906f3f734b69d28183516b1c5896c5e9c0b8e6c2132da2ce87832b030b68833aee4b10f7309bf44bcfe20c5fc84553de3794eccc219a765960d4fd3
7
- data.tar.gz: 6e089838194a76b7d4c24c6b5c61630d5342b943395f6ebfebda21b466d1773ca54f85628fd793375c7a62635ef9bb27ea2166ca2b23e7680fb3716f1d4d0a6a
6
+ metadata.gz: 55e7fba42eb573d628946b9d3171e909d98db3e41d41a73df7a25705b596e44a2f25b61a3a0b261de75cde7663d1dcf860bbde88d35803e47818704bd1d0782e
7
+ data.tar.gz: d3ae5e30713523f302eda4478f0a203194bb324a1513f04cda015f1de33c960e89803cf0cb14d78b89135778aee6b38ff699dcfe8261c6ad55140b67b1eb92ac
@@ -1,5 +1,5 @@
1
1
  module Sequel
2
2
  module Mapper
3
- VERSION = "0.1.2"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
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 create_data(object)
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 perist(object)
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.reduce({}) do |hash, column|
73
- hash[column] = object.public_send(column) if object.respond_to?(column)
74
- hash
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.1.2
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-03-03 00:00:00.000000000 Z
11
+ date: 2016-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel