Project

General

Profile

Patch #41954 » 0007-Support-table-filters.patch

Ko Nagase, 2024-12-13 09:24

View differences:

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
(9-9/10)