sequel_bitemporal 0.6.16 → 0.7.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: f1c4e0550d4e85ddec581ad5c9289081ad2c7a5e
4
- data.tar.gz: 278691b26ac3cf9385d6e2431a3f4d2ff15e38ce
3
+ metadata.gz: 2ba7a32d43c79c445e1e16d04211bd92fef7859a
4
+ data.tar.gz: b3843cf42e0923c0db13d5032a7d5a797706f969
5
5
  SHA512:
6
- metadata.gz: 4a7aa095e7f26e392151725df64983c359862784ac2e664d57cb59d6a0815cc1a3e1f0188c52e69b36fb87d69cc2e2cb9b050e023c9b1a1b2e2f6b1dd5f99f1d
7
- data.tar.gz: 1ed9559ecec830a2d07fee118038b09ac9a3d54fe31a21a693907e1178361d3b41f0a57b162198588e24ea57373bcc13af270f1892dcef0f1bc1809f9b00fb64
6
+ metadata.gz: 4e01ff6312719f3c62f400e1e2f7d73266a02664a4fd6fdce68071a4b837c686d8263eb615b22693ae233e479a69caf65cb3a337b4c4ded0ebba6d412f7d5b57
7
+ data.tar.gz: 389ad9ac4318a3a4054985966c8378403ed6f6d2ad24806fad895d1d7ca01b08fde85d3ce803da88286b9e071e96e38006ff9760fca14645e7278866e6689fa0
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/.travis.yml CHANGED
@@ -1,11 +1,11 @@
1
1
  rvm:
2
2
  - 1.9.3
3
3
  - 2.0.0
4
+ - 2.1.0
5
+ - jruby-19mode
6
+ - jruby-20mode
4
7
  env:
5
8
  - SQLITE=1
6
9
  - PG=1
7
- notifications:
8
- disabled: true
9
- matrix:
10
- allow_failures:
11
- - env: PG=1
10
+ addons:
11
+ postgresql: 9.2
data/Gemfile CHANGED
@@ -2,3 +2,13 @@ source "http://rubygems.org"
2
2
  gemspec
3
3
 
4
4
  gem "pry"
5
+
6
+ platforms :ruby do
7
+ gem "pg"
8
+ gem "sqlite3"
9
+ end
10
+
11
+ platforms :jruby do
12
+ gem "jdbc-postgres"
13
+ gem "jdbc-sqlite3"
14
+ end
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- sequel_bitemporal is Copyright © 2013 TalentBox SA
1
+ sequel_bitemporal is Copyright © 2011 TalentBox SA
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -44,4 +44,4 @@ Build Status
44
44
  License
45
45
  -------
46
46
 
47
- sequel_bitemporal is Copyright © 2013 TalentBox SA. It is free software, and may be redistributed under the terms specified in the LICENSE file.
47
+ sequel_bitemporal is Copyright © 2011 TalentBox SA. It is free software, and may be redistributed under the terms specified in the LICENSE file.
@@ -44,6 +44,13 @@ module Sequel
44
44
  raise Error, "please specify version class to use for bitemporal plugin" unless version
45
45
  missing = bitemporal_version_columns - version.columns
46
46
  raise Error, "bitemporal plugin requires the following missing column#{"s" if missing.size>1} on version class: #{missing.join(", ")}" unless missing.empty?
47
+
48
+ if Sequel::Plugins::Bitemporal.pg_jdbc?(master.db)
49
+ master.plugin :pg_typecast_on_load, *master.columns
50
+ elsif Sequel::Plugins::Bitemporal.jdbc?(master.db)
51
+ master.plugin :typecast_on_load, *master.columns
52
+ end
53
+
47
54
  master.instance_eval do
48
55
  @version_class = version
49
56
  base_alias = name ? underscore(demodulize(name)) : table_name
@@ -130,6 +137,12 @@ module Sequel
130
137
  end
131
138
  version.many_to_one :master, class: master, key: :master_id
132
139
  version.class_eval do
140
+ if Sequel::Plugins::Bitemporal.pg_jdbc?(db)
141
+ plugin :pg_typecast_on_load, *columns
142
+ elsif Sequel::Plugins::Bitemporal.jdbc?(master.db)
143
+ plugin :typecast_on_load, *columns
144
+ end
145
+
133
146
  def current?
134
147
  t = ::Sequel::Plugins::Bitemporal.point_in_time
135
148
  n = ::Sequel::Plugins::Bitemporal.now
@@ -273,12 +286,17 @@ module Sequel
273
286
  end if current_version?
274
287
  model.version_class.new current_attributes
275
288
  end
276
- pending_version.set attributes
289
+ pending_version.set_all attributes
277
290
  end
278
291
 
279
292
  def update_attributes(attributes={})
280
293
  self.attributes = attributes
281
- save(raise_on_failure: false) && self
294
+ if save raise_on_failure: false
295
+ _refresh_set_values @values
296
+ self
297
+ else
298
+ false
299
+ end
282
300
  end
283
301
 
284
302
  def before_create
@@ -478,19 +496,25 @@ module Sequel
478
496
 
479
497
  def save_fossil(expired, attributes={})
480
498
  fossil = model.version_class.new
481
- expired_attributes = expired.values.dup
499
+ expired_attributes = expired.keys.each_with_object({}) do |key, hash|
500
+ hash[key] = expired.send key
501
+ end
482
502
  expired_attributes.delete :id
483
- fossil.send :set_values, expired_attributes.merge(attributes)
503
+ fossil.set_all expired_attributes.merge(attributes)
484
504
  fossil.save validate: false
505
+ fossil.send :_refresh_set_values, fossil.values
485
506
  end
486
507
 
487
508
  def save_propagated(version, attributes={})
488
509
  propagated = model.version_class.new
489
- version_attributes = version.values.dup
510
+ version_attributes = version.keys.each_with_object({}) do |key, hash|
511
+ hash[key] = version.send key
512
+ end
490
513
  version_attributes.delete :id
491
514
  version_attributes[:created_at] = Sequel::Plugins::Bitemporal.point_in_time
492
- propagated.send :set_values, version_attributes.merge(attributes)
515
+ propagated.set_all version_attributes.merge(attributes)
493
516
  propagated.save validate: false
517
+ propagated.send :_refresh_set_values, propagated.values
494
518
  propagated
495
519
  end
496
520
 
@@ -1,2 +1,21 @@
1
1
  require "sequel"
2
+
3
+ module Sequel
4
+ module Plugins
5
+ module Bitemporal
6
+ def self.jruby?
7
+ (defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby') || defined?(JRUBY_VERSION)
8
+ end
9
+
10
+ def self.jdbc?(db)
11
+ db.adapter_scheme==:jdbc
12
+ end
13
+
14
+ def self.pg_jdbc?(db)
15
+ db.database_type==:postgres && jdbc?(db)
16
+ end
17
+ end
18
+ end
19
+ end
20
+
2
21
  require "sequel/plugins/bitemporal"
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "sequel_bitemporal"
6
- s.version = "0.6.16"
6
+ s.version = "0.7.0"
7
7
  s.authors = ["Joseph HALTER", "Jonathan TRON"]
8
8
  s.email = ["joseph.halter@thetalentbox.com", "jonathan.tron@thetalentbox.com"]
9
9
  s.homepage = "https://github.com/TalentBox/sequel_bitemporal"
@@ -16,10 +16,8 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
- s.add_runtime_dependency "sequel", "~> 3.30"
19
+ s.add_runtime_dependency "sequel", ">= 3.30", "< 5.0"
20
20
 
21
- s.add_development_dependency "sqlite3"
22
- s.add_development_dependency "pg"
23
21
  s.add_development_dependency "rspec", "~> 2.10.0"
24
22
  s.add_development_dependency "timecop"
25
23
  s.add_development_dependency "rake"
@@ -360,7 +360,7 @@ if DbHelpers.pg?
360
360
  | Single Standard | 12 | 1 | 1 | 2009-11-30 | 2009-12-01 | 2009-12-01 | 2009-12-02 | |
361
361
  | Single Standard | 12 | | 1 | 2009-12-01 | | 2009-11-28 | 2009-11-30 | |
362
362
  | Single Standard | 12 | 3 | 4 | 2009-12-01 | | 2009-11-30 | 2009-12-01 | |
363
- | Single Standard | 12 | 1 | 4 | 2009-12-01 | | 2009-12-01 | 2009-12-02 | |
363
+ | Single Standard | 12 | 3 | 4 | 2009-12-01 | | 2009-12-01 | 2009-12-02 | |
364
364
  }
365
365
  ensure
366
366
  @master_class.instance_variable_set :@propagate_per_column, propagate_per_column
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
  require "json"
3
3
 
4
- describe "Sequel::Plugins::Bitemporal" do
4
+ describe "Sequel::Plugins::Bitemporal", :skip_jdbc_sqlite do
5
5
  before :all do
6
6
  db_setup
7
7
  @version_class.instance_eval do
data/spec/spec_helper.rb CHANGED
@@ -5,12 +5,26 @@ require "pry"
5
5
  Dir[File.expand_path("../support/*.rb", __FILE__)].each{|f| require f}
6
6
  ENV["TZ"]="UTC"
7
7
 
8
+ require "sequel_bitemporal"
9
+
10
+ rspec_exclusions = {}
11
+
8
12
  DB = if DbHelpers.pg?
9
13
  `createdb sequel_bitemporal_test`
10
14
  Sequel.extension :pg_range, :pg_range_ops
11
- Sequel.postgres "sequel_bitemporal_test"
15
+ if ::Sequel::Plugins::Bitemporal.jruby?
16
+ Sequel.connect "jdbc:postgresql://localhost/sequel_bitemporal_test"
17
+ else
18
+ Sequel.postgres "sequel_bitemporal_test"
19
+ end
12
20
  else
13
- Sequel.sqlite
21
+ if Sequel::Plugins::Bitemporal.jruby?
22
+ rspec_exclusions[:skip_jdbc_sqlite] = true
23
+ Sequel::Model.plugin :typecast_on_load
24
+ Sequel.connect "jdbc:sqlite::memory:"
25
+ else
26
+ Sequel.sqlite
27
+ end
14
28
  end
15
29
 
16
30
  if ENV["DEBUG"]
@@ -20,7 +34,8 @@ end
20
34
 
21
35
  RSpec.configure do |config|
22
36
  config.include DbHelpers
23
-
37
+ config.treat_symbols_as_metadata_keys_with_true_values = true
38
+ config.filter_run_excluding rspec_exclusions
24
39
  config.before :each do
25
40
  db_truncate
26
41
  end
data/spec/support/db.rb CHANGED
@@ -4,6 +4,10 @@ module DbHelpers
4
4
  ENV.has_key? "PG"
5
5
  end
6
6
 
7
+ def self.jruby?
8
+ (defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby') || defined?(JRUBY_VERSION)
9
+ end
10
+
7
11
  def db_setup(opts={})
8
12
  use_time = opts[:use_time]
9
13
  DB.drop_table(:room_versions) if DB.table_exists?(:room_versions)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_bitemporal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.16
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph HALTER
@@ -9,90 +9,68 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-16 00:00:00.000000000 Z
12
+ date: 2014-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3.30'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '5.0'
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - ~>
28
+ - - ">="
26
29
  - !ruby/object:Gem::Version
27
30
  version: '3.30'
28
- - !ruby/object:Gem::Dependency
29
- name: sqlite3
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - '>='
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - '>='
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: pg
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - '>='
31
+ - - "<"
47
32
  - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
33
+ version: '5.0'
56
34
  - !ruby/object:Gem::Dependency
57
35
  name: rspec
58
36
  requirement: !ruby/object:Gem::Requirement
59
37
  requirements:
60
- - - ~>
38
+ - - "~>"
61
39
  - !ruby/object:Gem::Version
62
40
  version: 2.10.0
63
41
  type: :development
64
42
  prerelease: false
65
43
  version_requirements: !ruby/object:Gem::Requirement
66
44
  requirements:
67
- - - ~>
45
+ - - "~>"
68
46
  - !ruby/object:Gem::Version
69
47
  version: 2.10.0
70
48
  - !ruby/object:Gem::Dependency
71
49
  name: timecop
72
50
  requirement: !ruby/object:Gem::Requirement
73
51
  requirements:
74
- - - '>='
52
+ - - ">="
75
53
  - !ruby/object:Gem::Version
76
54
  version: '0'
77
55
  type: :development
78
56
  prerelease: false
79
57
  version_requirements: !ruby/object:Gem::Requirement
80
58
  requirements:
81
- - - '>='
59
+ - - ">="
82
60
  - !ruby/object:Gem::Version
83
61
  version: '0'
84
62
  - !ruby/object:Gem::Dependency
85
63
  name: rake
86
64
  requirement: !ruby/object:Gem::Requirement
87
65
  requirements:
88
- - - '>='
66
+ - - ">="
89
67
  - !ruby/object:Gem::Version
90
68
  version: '0'
91
69
  type: :development
92
70
  prerelease: false
93
71
  version_requirements: !ruby/object:Gem::Requirement
94
72
  requirements:
95
- - - '>='
73
+ - - ">="
96
74
  - !ruby/object:Gem::Version
97
75
  version: '0'
98
76
  description: Bitemporal versioning for sequel, fully tested.
@@ -103,9 +81,10 @@ executables: []
103
81
  extensions: []
104
82
  extra_rdoc_files: []
105
83
  files:
106
- - .gitignore
107
- - .ruby-version
108
- - .travis.yml
84
+ - ".gitignore"
85
+ - ".rspec"
86
+ - ".ruby-version"
87
+ - ".travis.yml"
109
88
  - Gemfile
110
89
  - LICENSE
111
90
  - README.md
@@ -131,17 +110,17 @@ require_paths:
131
110
  - lib
132
111
  required_ruby_version: !ruby/object:Gem::Requirement
133
112
  requirements:
134
- - - '>='
113
+ - - ">="
135
114
  - !ruby/object:Gem::Version
136
115
  version: '0'
137
116
  required_rubygems_version: !ruby/object:Gem::Requirement
138
117
  requirements:
139
- - - '>='
118
+ - - ">="
140
119
  - !ruby/object:Gem::Version
141
120
  version: '0'
142
121
  requirements: []
143
122
  rubyforge_project:
144
- rubygems_version: 2.0.3
123
+ rubygems_version: 2.2.1
145
124
  signing_key:
146
125
  specification_version: 4
147
126
  summary: Bitemporal versioning for sequel.