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: 71fa767da62f09f63fe6a2d3da4d3b05d88002dffb1c1163af0e4b6be9fabb82
4
- data.tar.gz: 5e14301d327038d95a7439c53eb2e3d1393a9ff7d59f75dfaa87ac66895a0ddb
3
+ metadata.gz: 230fdba2a8fd9f8de892d021ab35594b8a84970ff0a7c518b16d01716a698df0
4
+ data.tar.gz: d70670f7249f28fc27dbd92b44670cd46cd9b768b836ea9321deb18743d2197e
5
5
  SHA512:
6
- metadata.gz: fe8c94a7707711d185dfa43b1dc63647ec67f1573faea4739c86cb0cb3eaba6bed226f7c6ff4f661b1406e74ea4d192928eabb5c78fb803966355478d9995257
7
- data.tar.gz: 0f7afb80b297bf439d0487e2847ac405fd711f0da7eb16db3de1ed85086986bf33305f1abd93f57c76cbe7ae220bc8fee5470e3c1bc213433d728181b06bedf1
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
- file = @s3.get_object(bucket: 'eitje-deleted-jurr-2', key: @file_name)
36
- @records = JSON.parse(file.body.read.as_json).map(&:symbolize_keys)
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
- objects = s3.list_objects(bucket: 'eitje-backups', prefix: @db_table).contents
94
- names = objects.collect &:key
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
- json = JSON.parse(object.body.read.as_json).map(&:symbolize_keys)
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
- object = s3.get_object(bucket: 'eitje-backups', key: "#{table}/#{start_date.strftime("%Y-%m-%d")}.json")
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
- env_ids = json.map {|row| row[:env]}.uniq.map { |name| Environment.find_by(naam: name)&.id }
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
- next
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 += @existing_records) if @existing_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
- @logger.error "Error for env #{@env.naam} (##{@env.id}) with table '#{@table}' => #{e.class}: #{e.message}.\n\nBacktrace:#{e.backtrace}\n"
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
@@ -1,3 +1,3 @@
1
1
  module S3
2
- VERSION = '1.1.1'
2
+ VERSION = '1.1.4'
3
3
  end
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.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: 2021-11-12 00:00:00.000000000 Z
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.0.9
96
+ rubygems_version: 3.2.22
97
97
  signing_key:
98
98
  specification_version: 4
99
99
  summary: S3