eitje_s3 1.1.1 → 1.1.4
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 230fdba2a8fd9f8de892d021ab35594b8a84970ff0a7c518b16d01716a698df0
|
4
|
+
data.tar.gz: d70670f7249f28fc27dbd92b44670cd46cd9b768b836ea9321deb18743d2197e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e697501276a0a4921e2fd48e5daa5e697b5bae4a1554414deb910dceb1e2866e9770fb8fc489036e9299e341251efea4bf1faea96b91e07abeb28b3564c073c7
|
7
|
+
data.tar.gz: 7c1d4880cd61c4fffbe6df19f47b89d79012d74ab48f974e9e46023436d40a8af99a34a25b9ee7fe332ed76a1a17e1b8dea98f90f79919e4ba7c771f323261cb
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module S3::NewDeletedRecordsService
|
2
2
|
class << self
|
3
3
|
|
4
|
-
DB_TABLES = %w$ shifts teams users contracts infos posts topics $
|
4
|
+
DB_TABLES = %w$ shifts teams users contracts infos posts topics verlof_verzoeken$
|
5
5
|
|
6
6
|
def get_records(db_table:, start_date:, end_date:, env_id:)
|
7
7
|
@date_range = Date.parse(start_date)..Date.parse(end_date)
|
@@ -32,8 +32,12 @@ module S3::NewDeletedRecordsService
|
|
32
32
|
# the original returns waaaaay many records, so probably does not filter by date or
|
33
33
|
# something. Change for now and investigate if shit goes BG.
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
begin
|
36
|
+
file = @s3.get_object(bucket: 'eitje-deleted-jurr-2', key: @file_name)
|
37
|
+
@records = JSON.parse(file.body.read.as_json).map(&:symbolize_keys)
|
38
|
+
rescue Aws::S3::Errors::NoSuchKey
|
39
|
+
@records = [] # files are only generated when an env has some deleted envs, through by uploading them old-style first
|
40
|
+
end
|
37
41
|
end
|
38
42
|
|
39
43
|
def filter_records
|
@@ -46,4 +50,15 @@ module S3::NewDeletedRecordsService
|
|
46
50
|
end
|
47
51
|
|
48
52
|
end
|
49
|
-
end
|
53
|
+
end
|
54
|
+
|
55
|
+
__END__
|
56
|
+
|
57
|
+
def show_env(env_id, db_table = "verlof_verzoeken")
|
58
|
+
start_date = (Date.today - 1.years).to_s
|
59
|
+
end_date = (Date.today).to_s
|
60
|
+
records = S3::NewDeletedRecordsService.get_records(db_table: db_table, start_date: start_date, end_date: end_date, env_id: env_id)
|
61
|
+
end
|
62
|
+
|
63
|
+
show_env(1176)
|
64
|
+
show_env(1176, "verlof_verzoeken")
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module S3::OldDeletedRecordsService
|
2
2
|
class << self
|
3
3
|
|
4
|
-
DB_TABLES = %w$ shifts teams users contracts infos posts topics $
|
4
|
+
DB_TABLES = %w$ shifts teams users contracts infos posts topics verlof_verzoeken$
|
5
5
|
|
6
6
|
def get_records(db_table:, start_date:, end_date:, env_id:, env_name:)
|
7
7
|
|
@@ -34,6 +34,8 @@ module S3::OldDeletedRecordsService
|
|
34
34
|
@file_name = file_name
|
35
35
|
@file = request_object
|
36
36
|
|
37
|
+
next unless @file
|
38
|
+
|
37
39
|
case @db_table
|
38
40
|
when 'users'
|
39
41
|
filter_users_table_by_env
|
@@ -43,7 +45,7 @@ module S3::OldDeletedRecordsService
|
|
43
45
|
filter_file_by_env
|
44
46
|
end
|
45
47
|
|
46
|
-
end.flatten
|
48
|
+
end.flatten.compact
|
47
49
|
end
|
48
50
|
|
49
51
|
# filter methods
|
@@ -89,16 +91,29 @@ module S3::OldDeletedRecordsService
|
|
89
91
|
# AWS methods
|
90
92
|
|
91
93
|
def request_object_names
|
94
|
+
folder = @db_table
|
95
|
+
folder = "verlofverzoeks" if @db_table == "verlof_verzoeken"
|
96
|
+
|
92
97
|
s3 = Aws::S3::Client.new
|
93
|
-
|
94
|
-
|
98
|
+
|
99
|
+
objects = []
|
100
|
+
|
101
|
+
# Pagination: AWS returns 1000 items at max
|
102
|
+
s3.list_objects(bucket: 'eitje-backups', prefix: folder).each do |response|
|
103
|
+
objects += response.contents
|
104
|
+
end
|
105
|
+
|
106
|
+
names = objects.collect &:key
|
95
107
|
end
|
96
108
|
|
97
109
|
def request_object
|
98
110
|
s3 = Aws::S3::Client.new
|
99
111
|
object = s3.get_object(bucket: 'eitje-backups', key: @file_name)
|
100
|
-
|
112
|
+
body = object.body.read.as_json
|
113
|
+
json = JSON.parse(body).map(&:symbolize_keys)
|
114
|
+
rescue JSON::ParserError => e
|
115
|
+
puts "Invalid file... skip this file"
|
101
116
|
end
|
102
117
|
|
103
118
|
end
|
104
|
-
end
|
119
|
+
end
|
@@ -20,20 +20,32 @@ module S3::TransformDeletedFilesService
|
|
20
20
|
envs_to_migrate = []
|
21
21
|
|
22
22
|
set_tables.each do |table|
|
23
|
-
|
23
|
+
|
24
|
+
folder = table
|
25
|
+
folder = "verlofverzoeks" if table == "verlof_verzoeken"
|
26
|
+
|
27
|
+
puts "requesting #{table} on #{start_date.strftime("%Y-%m-%d")}..."
|
28
|
+
|
29
|
+
object = s3.get_object(bucket: 'eitje-backups', key: "#{folder}/#{start_date.strftime("%Y-%m-%d")}.json")
|
24
30
|
json = JSON.parse(object.body.read.as_json).map(&:symbolize_keys)
|
25
31
|
|
26
32
|
if table == 'topics'
|
27
33
|
env_ids = json.map {|row| row[:environment_ids]}.flatten.compact.uniq
|
28
34
|
else
|
29
|
-
|
35
|
+
puts "new table logic...?"
|
36
|
+
env_ids = json.map { _1[:environment_id] }.compact.uniq
|
37
|
+
|
38
|
+
unless env_ids.present?
|
39
|
+
env_ids = json.map {|row| row[:env]}.uniq.map { |name| Environment.find_by(naam: name)&.id }
|
40
|
+
end
|
30
41
|
end
|
31
42
|
|
32
43
|
envs_to_migrate << env_ids
|
33
|
-
rescue => e
|
44
|
+
rescue Aws::S3::Errors::NoSuchKey => e
|
34
45
|
# in case the file does not exist on S3, cause there are no deleted
|
35
46
|
# records, skip to next table
|
36
|
-
|
47
|
+
puts "no records found for #{table} on #{start_date.strftime("%Y-%m-%d")}!"
|
48
|
+
[]
|
37
49
|
end
|
38
50
|
|
39
51
|
envs_to_migrate = envs_to_migrate.flatten.uniq.compact
|
@@ -48,6 +60,11 @@ module S3::TransformDeletedFilesService
|
|
48
60
|
@table = table
|
49
61
|
compose_file
|
50
62
|
end
|
63
|
+
|
64
|
+
rescue ActiveRecord::RecordNotFound => e
|
65
|
+
|
66
|
+
rescue => e
|
67
|
+
binding.pry
|
51
68
|
end
|
52
69
|
|
53
70
|
def migrate_files_multi_env(environment_ids, start_date: Date.yesterday)
|
@@ -98,6 +115,7 @@ module S3::TransformDeletedFilesService
|
|
98
115
|
@existing_records = JSON.parse(object.body.read.as_json).map(&:symbolize_keys)
|
99
116
|
|
100
117
|
rescue Aws::S3::Errors::NoSuchKey => e
|
118
|
+
binding.pry
|
101
119
|
@existing_records = nil
|
102
120
|
end
|
103
121
|
|
@@ -106,12 +124,16 @@ module S3::TransformDeletedFilesService
|
|
106
124
|
set_file_name
|
107
125
|
set_existing_records
|
108
126
|
|
109
|
-
(@records
|
127
|
+
@records = (@records | @existing_records) if @existing_records
|
110
128
|
set_json
|
129
|
+
puts "completed successfully! new total: #{@records&.count}, old total: #{@existing_records&.count}"
|
111
130
|
upload_file
|
112
131
|
|
113
132
|
rescue => e
|
114
|
-
|
133
|
+
message = "Error for env #{@env.naam} (##{@env.id}) with table '#{@table}' => #{e.class}: #{e.message}.\n\nBacktrace:#{e.backtrace}\n"
|
134
|
+
puts message
|
135
|
+
binding.pry
|
136
|
+
@logger.error message
|
115
137
|
end
|
116
138
|
|
117
139
|
def upload_file
|
@@ -119,4 +141,4 @@ module S3::TransformDeletedFilesService
|
|
119
141
|
end
|
120
142
|
|
121
143
|
end
|
122
|
-
end
|
144
|
+
end
|
data/lib/s3/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eitje_s3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jurriaan Schrofer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
|
-
rubygems_version: 3.
|
96
|
+
rubygems_version: 3.2.22
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: S3
|