sequel_bitemporal 0.6.16 → 0.7.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: 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.