eitje_s3 1.1.1 → 1.1.4
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
|
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
|