- verify the count and schema for all records
old_db_url = ""
new_db_url = ""
connection_klass = Class.new(ApplicationRecord) do| query = "SELECT table_name, column_name FROM information_schema.columns WHERE data_type = 'jsonb';" | |
| result = ActiveRecord::Base.connection.execute(query) | |
| jsonb_aggregate = result.values.to_h.map do |table, column| | |
| jsonb_result = ActiveRecord::Base.connection.execute("SELECT MAX(pg_column_size(#{column})) FROM #{table};").values | |
| if jsonb_result.first | |
| puts "done #{table}, column: #{column}" | |
| { size: jsonb_result.first, table: table, column: column } | |
| end |
| class NevacheImport | |
| attr_reader :account, :base_url, :mechanize, :csv_dir, :rentals_csv_file, | |
| :rentals_details_csv_file, :addresses_csv_file | |
| def initialize(account:, csv_dir:) | |
| @account = account | |
| @base_url = "http://www.nevache-tourisme.fr/fr/locations-meubles/" | |
| @mechanize = Mechanize.new | |
| @csv_dir = csv_dir | |
| @rentals_csv_file = File.join(csv_dir, "a_structures.csv") |
| let errorHandlers = { | |
| isAuthenticationError: transitionAway, | |
| IsImportantDataError: showError, | |
| isUnimportantDataError: keepTrying | |
| }; | |
| let errorHandler = Object.keys(errorHandlers).find(function(isCurrentError) { isCurrentError(errorFromTryCatch) }); | |
| errorHandler(errorFromTryCatch); |