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