eitje_s3 1.0.0 → 1.0.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: 2807a3b8cb433040b1e0e32add53c9ad8cd6bdb01912067fb8466b352500e3f5
         | 
| 4 | 
            +
              data.tar.gz: 6cf07414f5ad6db0e99f95b06917d87d109a3fecb8e0c2b2b032b420ddd2f022
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 76182141a7f669de16ed8f9de9740c1714f10cb0d8a7deb0822018b81921a0d5e448cb5e95ef1671264ab5ec47232f3c111fe71237e5d56ef403713c51240f72
         | 
| 7 | 
            +
              data.tar.gz: c5c9450d3d14c3e5ada2a1a3c940c6876f179bbc1525f50bbb669b9bd3245e645eb41645a94c0d64ed2d38c00ac9e4259d78981100f8275a3c1fdd0b06a1c80f
         | 
| @@ -1,13 +1,7 @@ | |
| 1 1 | 
             
            module S3::NewDeletedRecordsService
         | 
| 2 2 | 
             
              class << self
         | 
| 3 3 |  | 
| 4 | 
            -
               DB_TABLES = %w$ shifts teams users contracts infos posts $
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                def test(table)
         | 
| 7 | 
            -
                  S3::NewDeletedRecordsService.get_records(
         | 
| 8 | 
            -
                    db_table: table, start_date: '2021-03-28', end_date: '2021-04-3', env_id: 513
         | 
| 9 | 
            -
                  )
         | 
| 10 | 
            -
                end
         | 
| 4 | 
            +
               DB_TABLES = %w$ shifts teams users contracts infos posts topics $
         | 
| 11 5 |  | 
| 12 6 | 
             
                def get_records(db_table:, start_date:, end_date:, env_id:)    
         | 
| 13 7 | 
             
                  @date_range = Date.parse(start_date)..Date.parse(end_date)
         | 
| @@ -32,7 +26,13 @@ module S3::NewDeletedRecordsService | |
| 32 26 | 
             
                end
         | 
| 33 27 |  | 
| 34 28 | 
             
                def query_records    
         | 
| 35 | 
            -
             | 
| 29 | 
            +
             | 
| 30 | 
            +
                  # Previously (before adding 'topics') the request bucket was 'eitje-deleted-jurr'
         | 
| 31 | 
            +
                  # but somehow topics break if we dont request the bucket '-2'. Now for other tables
         | 
| 32 | 
            +
                  # the original returns waaaaay many records, so probably does not filter by date or
         | 
| 33 | 
            +
                  # something. Change for now and investigate if shit goes BG.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  file     = @s3.get_object(bucket: 'eitje-deleted-jurr-2', key: @file_name)
         | 
| 36 36 | 
             
                  @records = JSON.parse(file.body.read.as_json).map(&:symbolize_keys)
         | 
| 37 37 | 
             
                end
         | 
| 38 38 |  | 
| @@ -1,9 +1,7 @@ | |
| 1 1 | 
             
            module S3::OldDeletedRecordsService
         | 
| 2 2 | 
             
              class << self
         | 
| 3 3 |  | 
| 4 | 
            -
               DB_TABLES = %w$ shifts teams users contracts infos posts $
         | 
| 5 | 
            -
             | 
| 6 | 
            -
               # S3::OldDeletedRecordsService.get_records(env_id: 307, env_name: 'Kua - Den Haag', db_table: 'verlofverzoeks', start_date: '2021-02-01', end_date: '2021-04-01')
         | 
| 4 | 
            +
               DB_TABLES = %w$ shifts teams users contracts infos posts topics $
         | 
| 7 5 |  | 
| 8 6 | 
             
                def get_records(db_table:, start_date:, end_date:, env_id:, env_name:)
         | 
| 9 7 |  | 
| @@ -20,7 +18,6 @@ module S3::OldDeletedRecordsService | |
| 20 18 | 
             
                  @file_names_filtered_by_date  = filter_by_date
         | 
| 21 19 |  | 
| 22 20 | 
             
                  read_all_files
         | 
| 23 | 
            -
             | 
| 24 21 | 
             
                end
         | 
| 25 22 |  | 
| 26 23 | 
             
                # validations
         | 
| @@ -36,7 +33,15 @@ module S3::OldDeletedRecordsService | |
| 36 33 |  | 
| 37 34 | 
             
                    @file_name = file_name
         | 
| 38 35 | 
             
                    @file      = request_object 
         | 
| 39 | 
            -
             | 
| 36 | 
            +
             | 
| 37 | 
            +
                    case @db_table
         | 
| 38 | 
            +
                    when 'users'
         | 
| 39 | 
            +
                      filter_users_table_by_env
         | 
| 40 | 
            +
                    when 'topics'
         | 
| 41 | 
            +
                      filter_topics_table_by_env
         | 
| 42 | 
            +
                    else
         | 
| 43 | 
            +
                      filter_file_by_env
         | 
| 44 | 
            +
                    end
         | 
| 40 45 |  | 
| 41 46 | 
             
                  end.flatten
         | 
| 42 47 | 
             
                end
         | 
| @@ -59,6 +64,10 @@ module S3::OldDeletedRecordsService | |
| 59 64 | 
             
                  @file.select { |row| row[:envs].include? @env_name }
         | 
| 60 65 | 
             
                end
         | 
| 61 66 |  | 
| 67 | 
            +
                def filter_topics_table_by_env
         | 
| 68 | 
            +
                  @file.select { |row| row[:environment_ids]&.include?(@env_id) }
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 62 71 | 
             
                def filter_by_date   
         | 
| 63 72 | 
             
                  @file_names_filtered_by_table.select { |file_name| @date_range.include?(get_date(file_name)) }
         | 
| 64 73 | 
             
                end
         | 
| @@ -5,24 +5,61 @@ module S3::TransformDeletedFilesService | |
| 5 5 |  | 
| 6 6 | 
             
                BUCKET = 'eitje-deleted-jurr-2'
         | 
| 7 7 |  | 
| 8 | 
            -
                def  | 
| 8 | 
            +
                def set_setters(start_date = Date.yesterday)
         | 
| 9 9 | 
             
                  @start_date = start_date
         | 
| 10 | 
            -
             | 
| 11 10 | 
             
                  set_logger
         | 
| 12 11 | 
             
                  set_bucket
         | 
| 13 12 | 
             
                  set_tables
         | 
| 14 13 | 
             
                  set_dates(start_date)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def migrate_files(start_date: Date.today)
         | 
| 17 | 
            +
                  set_setters(start_date)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  s3 = Aws::S3::Client.new
         | 
| 20 | 
            +
                  envs_to_migrate = []
         | 
| 15 21 |  | 
| 16 | 
            -
                   | 
| 17 | 
            -
                     | 
| 22 | 
            +
                  set_tables.each do |table|  
         | 
| 23 | 
            +
                    object  = s3.get_object(bucket: 'eitje-backups', key: "#{table}/#{start_date.strftime("%Y-%m-%d")}.json")
         | 
| 24 | 
            +
                    json    = JSON.parse(object.body.read.as_json).map(&:symbolize_keys)
         | 
| 18 25 |  | 
| 19 | 
            -
                     | 
| 20 | 
            -
                       | 
| 21 | 
            -
             | 
| 26 | 
            +
                    if table == 'topics'
         | 
| 27 | 
            +
                      env_ids = json.map {|row| row[:environment_ids]}.flatten.compact.uniq
         | 
| 28 | 
            +
                    else
         | 
| 29 | 
            +
                      env_ids = json.map {|row| row[:env]}.uniq.map { |name| Environment.find_by(naam: name)&.id }
         | 
| 22 30 | 
             
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    envs_to_migrate << env_ids
         | 
| 33 | 
            +
                  rescue => e
         | 
| 34 | 
            +
                    # in case the file does not exist on S3, cause there are no deleted 
         | 
| 35 | 
            +
                    # records, skip to next table
         | 
| 36 | 
            +
                    next
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  envs_to_migrate = envs_to_migrate.flatten.uniq.compact
         | 
| 40 | 
            +
                  
         | 
| 41 | 
            +
                  envs_to_migrate.each { |env_id| migrate_files_single_env(env_id, start_date: start_date, skip_setters: true) }
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def migrate_files_single_env(environment_id, start_date: Date.yesterday, skip_setters: false)
         | 
| 45 | 
            +
                  set_setters(start_date) unless skip_setters
         | 
| 46 | 
            +
                  @env = Environment.find(environment_id)
         | 
| 47 | 
            +
                  @tables.each do |table| 
         | 
| 48 | 
            +
                    @table = table          
         | 
| 49 | 
            +
                    compose_file
         | 
| 23 50 | 
             
                  end
         | 
| 24 51 | 
             
                end
         | 
| 25 52 |  | 
| 53 | 
            +
                def migrate_files_multi_env(environment_ids, start_date: Date.yesterday)
         | 
| 54 | 
            +
                  set_setters(start_date)
         | 
| 55 | 
            +
                  environment_ids.each { |id| migrate_files_single_env(id, start_date: start_date, skip_setters: true) }
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def migrate_files_single_org(organisation_id, start_date: Date.yesterday)
         | 
| 59 | 
            +
                  env_ids = Organisation.find(organisation_id).environment_ids
         | 
| 60 | 
            +
                  migrate_files_multi_env(env_ids, start_date: start_date)
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 26 63 | 
             
                def set_logger
         | 
| 27 64 | 
             
                  @logger = Logger.new "log/migrate_deleted_records_#{DateTime.now.strftime('%Y_%m_%d_%H:%M:%S')}.log"
         | 
| 28 65 | 
             
                end
         | 
| @@ -32,8 +69,7 @@ module S3::TransformDeletedFilesService | |
| 32 69 | 
             
                end
         | 
| 33 70 |  | 
| 34 71 | 
             
                def set_tables
         | 
| 35 | 
            -
                   | 
| 36 | 
            -
                  @tables = ['verlof_verzoeken']
         | 
| 72 | 
            +
                  @tables = S3::OldDeletedRecordsService::singleton_class::DB_TABLES
         | 
| 37 73 | 
             
                end
         | 
| 38 74 |  | 
| 39 75 | 
             
                def set_dates(start_date)
         | 
| @@ -46,7 +82,7 @@ module S3::TransformDeletedFilesService | |
| 46 82 | 
             
                end
         | 
| 47 83 |  | 
| 48 84 | 
             
                def set_records
         | 
| 49 | 
            -
                  @records = S3::OldDeletedRecordsService.get_records(env_id: @env.id, env_name: @env.naam, db_table:  | 
| 85 | 
            +
                  @records = S3::OldDeletedRecordsService.get_records(env_id: @env.id, env_name: @env.naam, db_table: @table, **@dates)
         | 
| 50 86 | 
             
                end
         | 
| 51 87 |  | 
| 52 88 | 
             
                def set_json
         | 
| @@ -72,7 +108,8 @@ module S3::TransformDeletedFilesService | |
| 72 108 |  | 
| 73 109 | 
             
                  (@records += @existing_records) if @existing_records
         | 
| 74 110 | 
             
                  set_json
         | 
| 75 | 
            -
                  upload_file | 
| 111 | 
            +
                  upload_file
         | 
| 112 | 
            +
             | 
| 76 113 | 
             
                  rescue => e
         | 
| 77 114 | 
             
                    @logger.error "Error for env #{@env.naam} (##{@env.id}) with table '#{@table}' => #{e.class}: #{e.message}.\n\nBacktrace:#{e.backtrace}\n"
         | 
| 78 115 | 
             
                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.0. | 
| 4 | 
            +
              version: 1.0.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 | 
            +
            date: 2021-08-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         |