sn-revisions 0.1.1 → 0.1.2

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: adab82c07e5663ee93287087e7724e40d6b9824d
4
- data.tar.gz: bdd9d0582b9fb0ef59a1ebd9179a881a716578c4
3
+ metadata.gz: 008b8602beb04a57882d9e7f3e821fc13071b5b7
4
+ data.tar.gz: 0362024a93034631d5f8d5d33a9a1f93969bda5e
5
5
  SHA512:
6
- metadata.gz: 1da0a860f88c5043660172d13818c22a8ff4a662620d74b39d1a25572f61d29d28e3d7458d8abfc4781904eda3779a36d798b345ceb15510a0b6b9ef573dd41b
7
- data.tar.gz: 79616569158fb07c21bfe0df8cc5f49191e9f73e89c12b56e183bffa6d54cbf559a93f5edf4bfbac776c1041e746e3a506c3b932fcb7b4492dbdd4b20e7c0349
6
+ metadata.gz: f8e9647c44c9ee6e38d6ba21a8d94624f048d10dc2ed6d9949dc845324ee926702a5ff950054c57c64a2b83f0ee30c3dcab6f90367509f2bbf750dc7f13cb580
7
+ data.tar.gz: 11ea6a08385908d96cc419bcbc04ae918897a37014e4d1dbabf7efa75ae11b9dbdb377fdbb00b01e7665ff5b7f4a40c20d81e010143b4d3450b2750f75b1a7ee
@@ -13,6 +13,7 @@ module Revisions
13
13
  end
14
14
 
15
15
  if item
16
+ item.prune_history
16
17
  item.revisions.each_with_index do |rev, index|
17
18
  action = {
18
19
  :label => "#{rev.created_at.strftime('%a %b %d, %Y at %I:%M%p %Z')}" + (index == 0 ? " (current)" : ""),
@@ -8,7 +8,6 @@ module Revisions
8
8
  items.each do |item_hash|
9
9
  item = current_user.items.find_or_create_by(:item_uuid => item_hash["uuid"])
10
10
  item.add_revision(item_hash["content"], item_hash["enc_item_key"], item_hash["auth_hash"])
11
- item.condense_history
12
11
  if item.content_type == nil
13
12
  item.content_type = item_hash["content_type"]
14
13
  item.save
@@ -8,27 +8,37 @@ module Revisions
8
8
  revision.content = content
9
9
  revision.enc_item_key = item_key
10
10
  revision.auth_hash = auth_hash
11
+ # revision.num = self.revisions.length > 0 && self.revisions.first.num ? (self.revisions.first.num + 1) : 0
11
12
  revision.save
12
13
  end
13
14
 
14
15
 
15
- def condense_history
16
- # revisions past 30 days are limited to 1 revision per day
16
+ def prune_history
17
+ # revisions past 30 days are limited to min_revs revision per day
17
18
  # any revision within 30 days is capped to 30-days_from_today revisions per day
18
19
  # so if there are 50 revisions from 5 days ago, 50 - (30-5) = 25 revisions are allowed
19
20
  days = 30
20
- min_revs = 3
21
+ min_revs = 4
21
22
  days.times do |days_from_today|
22
23
  date = Time.now.utc.to_date - days_from_today
23
- num_revs_allowed = days - days_from_today + min_revs
24
+ num_revs_target = days - days_from_today + min_revs # actual number kept may be a little more or less
24
25
  revs = self.revisions.where(:created_at => date.midnight..date.end_of_day).pluck(:id)
25
- if revs.length > num_revs_allowed
26
- num_to_remove = revs.length - num_revs_allowed
27
- num_to_remove.times do |time|
28
- index = revs.length/2 - 1
29
- Revision.destroy(revs[index])
30
- revs.delete_at(index)
26
+ if revs.length > num_revs_target
27
+ keep_every_nth = (revs.length.to_f / (num_revs_target)).ceil
28
+ keep = [revs.length - 1]
29
+
30
+ (0..revs.length - keep_every_nth).step(keep_every_nth) do |n|
31
+ keep.push(n)
32
+ end
33
+
34
+ discard_ids = []
35
+ revs.length.times do |index|
36
+ if keep.include?(index) == false
37
+ discard_ids.push(revs[index])
38
+ end
31
39
  end
40
+
41
+ Revision.destroy(discard_ids)
32
42
  end
33
43
  end
34
44
  end
@@ -1,3 +1,3 @@
1
1
  module Revisions
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sn-revisions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Standard Notes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-14 00:00:00.000000000 Z
11
+ date: 2017-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails