periodic_records 0.3.1 → 0.4.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: ae65d46b1c1fd12132918c0d227aab03751ecc0c
4
- data.tar.gz: ef78b4a608ea9a0edfa3f88d395bc3cce285f201
3
+ metadata.gz: dc0ab41d3f2d440d0e9a34ca224291a77341953b
4
+ data.tar.gz: f9ad6457ef3597fed820700f3b7de7e8503a1f04
5
5
  SHA512:
6
- metadata.gz: 42d890582bd6aa6ce911924cad8251dfce77ce779cf0673f370ab69de58c5d104a99e6cfae55caaa3c553b5528832c8e8eebc3304d6f7486edc03f8b2b46cd0f
7
- data.tar.gz: 3fd57d7ce979172a948a1b9e32a04871f6bb58e677f3f777a831c3e8a365793f458b7fdca823c4723079ee29931e749289cc1b55d78dac85abca5dfaacd02570
6
+ metadata.gz: 642c0c01f4b876df42bd28216caf6b4a0d62fca6270839504f7b350d35251bb6699ef50ea39ade09347973346ed9a25692f78c124c63c447892d808bb6a848be
7
+ data.tar.gz: 2180f4bd7942a36d6f04a8692a3bb20f2ddf9a43fd95f26ec6396d591a817b89ee2d54f4f6ead99e10ab592d38ba9b621000f8e015f243725337de2ffb30b25e
data/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [0.4.0] - 2019-04-02
7
+
8
+ - Add time sensitive period splitting #4
9
+
6
10
  ## [0.3.1] - 2018-05-24
7
11
 
8
12
  - Allow to add custom duplication logic #3
data/README.md CHANGED
@@ -151,6 +151,12 @@ class AddEmployeeAssignmentsOverlappingDatesConstraint < ActiveRecord::Migration
151
151
  end
152
152
  ```
153
153
 
154
+ ## Time sensitive records
155
+
156
+ If you need your records to be split with time component, then set `start_at` and `end_at` columns to `datetime` type.
157
+
158
+ Use `TSRANGE` instead of `DATERANGE` when creating database constraint.
159
+
154
160
  ## Gapless records
155
161
 
156
162
  If you want to avoid gaps between records, you can include also `PeriodicRecords::Gapless`.
@@ -76,6 +76,18 @@ module PeriodicRecords
76
76
  dup
77
77
  end
78
78
 
79
+ def record_split_step
80
+ @record_split_step ||= begin
81
+ column = self.class.column_for_attribute(:start_at)
82
+ if column.type == :datetime
83
+ precision = column.precision || 6
84
+ Float("1.0e-#{precision}").seconds
85
+ else
86
+ 1.day
87
+ end
88
+ end
89
+ end
90
+
79
91
  private
80
92
 
81
93
  def set_default_period
@@ -89,23 +101,23 @@ module PeriodicRecords
89
101
 
90
102
  def split_overlapping_record(overlapping_record)
91
103
  overlapping_record_end = overlapping_record.periodic_dup
92
- overlapping_record_end.start_at = end_at + 1.day
104
+ overlapping_record_end.start_at = end_at + record_split_step
93
105
  overlapping_record_end.end_at = overlapping_record.end_at
94
106
 
95
107
  overlapping_record_start = overlapping_record
96
- overlapping_record_start.end_at = start_at - 1.day
108
+ overlapping_record_start.end_at = start_at - record_split_step
97
109
 
98
110
  overlapping_record_start.save(validate: false)
99
111
  overlapping_record_end.save(validate: false)
100
112
  end
101
113
 
102
114
  def adjust_overlapping_record_end_at(overlapping_record)
103
- overlapping_record.end_at = start_at - 1.day
115
+ overlapping_record.end_at = start_at - record_split_step
104
116
  overlapping_record.save(validate: false)
105
117
  end
106
118
 
107
119
  def adjust_overlapping_record_start_at(overlapping_record)
108
- overlapping_record.start_at = end_at + 1.day
120
+ overlapping_record.start_at = end_at + record_split_step
109
121
  overlapping_record.save(validate: false)
110
122
  end
111
123
 
@@ -1,3 +1,3 @@
1
1
  module PeriodicRecords
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency "activerecord", ">= 5.1"
23
23
  spec.add_runtime_dependency "activesupport", ">= 5.1"
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.9"
25
+ spec.add_development_dependency "bundler", ">= 1.9"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
27
  spec.add_development_dependency "rspec", "~> 3.3"
28
28
  spec.add_development_dependency "sqlite3"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: periodic_records
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgars Beigarts
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-05-24 00:00:00.000000000 Z
12
+ date: 2019-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -43,14 +43,14 @@ dependencies:
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.9'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.9'
56
56
  - !ruby/object:Gem::Dependency