Patch #41954 » 0007-Support-table-filters.patch
| lib/tasks/extract_fixtures.rake | ||
|---|---|---|
| 38 | 38 | 
    dir = ENV['DIR'] || './tmp/fixtures'  | 
| 39 | 39 | 
    time_offset = ENV['TIME_OFFSET'] || ''  | 
| 40 | 40 | 
      skip_tables = ENV['SKIP_TABLES']&.split(',') || []
   | 
| 41 | 
      table_filters = ENV['TABLE_FILTERS']&.split(';')&.map {|tf| tf.split(":", 2)}&.to_h || {}
   | 
|
| 41 | 42 | |
| 42 | 43 | 
    FileUtils.mkdir_p(dir)  | 
| 43 | 44 | 
    if time_offset.present? && !time_offset.match?(/^([+-](0[0-9]|1[0-4]):[0-5][0-9])$/)  | 
| ... | ... | |
| 52 | 53 | 
    columns = ActiveRecord::Base.connection.columns(table_name)  | 
| 53 | 54 | 
    column_names = columns.map(&:name)  | 
| 54 | 55 | 
          order_columns = column_names.include?('id') ? 'id' : column_names.join(', ')
   | 
| 55 | 
          sql = "SELECT * FROM #{table_name} ORDER BY #{order_columns}"
   | 
|
| 56 | 
          where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : ''
   | 
|
| 57 | 
          sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}"
   | 
|
| 56 | 58 | 
    data = ActiveRecord::Base.connection.select_all(sql)  | 
| 57 | 59 | 
          file.write data.inject({}) { |hash, record|
   | 
| 58 | 60 | 
    # cast extracted values  |