sn-revisions 0.1.1 → 0.1.2

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