bard-backup 0.4.0 → 0.6.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 +4 -4
- data/.ruby-version +1 -1
- data/lib/bard/backup/deleter.rb +11 -11
- data/lib/bard/backup/s3_dir.rb +11 -7
- data/lib/bard/backup/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4746616bc6439c661cc7187970f3d72f51df06395e6e7535ce1238465746c1f7
|
4
|
+
data.tar.gz: b1a41fca533525a326fecf71f848477ed31e391346c53cf2db73bf4d1c5e6c23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c1ee7c76fd20226a6880e7f667a6f9eeb074d073248687673119574501db7e322112ade1de83768034a037a538c08182d8fdbfbab1c14f101e27ea1a86cc212
|
7
|
+
data.tar.gz: 8944a7834916e521b35ec5bf4a09cd4369cfe7613225d5f6e46fff0ffe16729e8ba80a0cdabc99647365ede937103dcc8d083deb9b756304dcff7c2f8dd060de
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-3.
|
1
|
+
ruby-3.3.3
|
data/lib/bard/backup/deleter.rb
CHANGED
@@ -6,24 +6,24 @@ module Bard
|
|
6
6
|
module Backup
|
7
7
|
class Deleter < Struct.new(:s3_dir, :now)
|
8
8
|
def call
|
9
|
-
s3_dir.delete
|
9
|
+
s3_dir.delete files_to_delete
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
s3_dir.
|
12
|
+
def files_to_delete
|
13
|
+
s3_dir.files.select do |file|
|
14
14
|
[
|
15
|
-
Filter.new(now,
|
16
|
-
Filter.new(now,
|
17
|
-
Filter.new(now,
|
18
|
-
Filter.new(now,
|
19
|
-
Filter.new(now,
|
20
|
-
].all? { |filter| !filter.cover?(
|
15
|
+
Filter.new(now, 48, :hours),
|
16
|
+
Filter.new(now, 30, :days),
|
17
|
+
Filter.new(now, 26, :weeks),
|
18
|
+
Filter.new(now, 24, :months),
|
19
|
+
Filter.new(now, 25, :years),
|
20
|
+
].all? { |filter| !filter.cover?(file) }
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
class Filter < Struct.new(:now, :limit, :unit)
|
25
|
-
def cover?
|
26
|
-
remote = DateTime.parse(
|
25
|
+
def cover? file
|
26
|
+
remote = DateTime.parse(file).beginning_of_hour
|
27
27
|
limit.times.any? do |count|
|
28
28
|
remote == ago(count)
|
29
29
|
end
|
data/lib/bard/backup/s3_dir.rb
CHANGED
@@ -4,13 +4,15 @@ require "rexml"
|
|
4
4
|
module Bard
|
5
5
|
module Backup
|
6
6
|
class S3Dir < Data.define(:path, :access_key, :secret_key, :region)
|
7
|
-
def
|
7
|
+
def files
|
8
8
|
response = client.list_objects_v2({
|
9
9
|
bucket: bucket_name,
|
10
10
|
prefix: folder_prefix,
|
11
11
|
})
|
12
12
|
raise if response.is_truncated
|
13
|
-
response.contents.map
|
13
|
+
response.contents.map do |object|
|
14
|
+
object.key.sub("#{folder_prefix}/", "")
|
15
|
+
end
|
14
16
|
end
|
15
17
|
|
16
18
|
def put file_path, body: File.read(file_path)
|
@@ -35,9 +37,11 @@ module Bard
|
|
35
37
|
FileUtils.rm file_path
|
36
38
|
end
|
37
39
|
|
38
|
-
def delete
|
39
|
-
return if
|
40
|
-
objects_to_delete = Array(
|
40
|
+
def delete file_paths
|
41
|
+
return if file_paths.empty?
|
42
|
+
objects_to_delete = Array(file_paths).map do |file_path|
|
43
|
+
{ key: [folder_prefix, File.basename(file_path)].compact.join("/") }
|
44
|
+
end
|
41
45
|
client.delete_objects({
|
42
46
|
bucket: bucket_name,
|
43
47
|
delete: {
|
@@ -48,8 +52,8 @@ module Bard
|
|
48
52
|
end
|
49
53
|
|
50
54
|
def empty!
|
51
|
-
|
52
|
-
delete
|
55
|
+
files.each_slice(1000) do |batch|
|
56
|
+
delete batch
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
data/lib/bard/backup/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bard-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micah Geisel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backhoe
|
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
|
-
rubygems_version: 3.
|
109
|
+
rubygems_version: 3.5.11
|
110
110
|
signing_key:
|
111
111
|
specification_version: 4
|
112
112
|
summary: Provides automated db backups for bard projects
|