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 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