Project

General

Profile

Patch #41954 » 0011-Skip-empty-table.patch

Ko Nagase, 2025-03-30 12:05

View differences:

lib/tasks/extract_fixtures.rake
51 51
  ActiveRecord::Base.establish_connection
52 52
  tables = tables.present? ? tables : ActiveRecord::Base.connection.tables
53 53
  (tables - skip_tables).each do |table_name|
54
    columns = ActiveRecord::Base.connection.columns(table_name)
55
    column_names = columns.map(&:name)
56
    has_id_column = column_names.include?('id')
57
    order_columns = has_id_column ? 'id' : column_names.join(', ')
58
    where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : ''
59
    sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}"
60
    data = ActiveRecord::Base.connection.select_all(sql)
61
    if data.empty?
62
      next
63
    end
54 64
    i = "000"
55 65
    File.open(File.join(dir, "#{table_name}.yml"), 'w') do |file|
56
      columns = ActiveRecord::Base.connection.columns(table_name)
57
      column_names = columns.map(&:name)
58
      has_id_column = column_names.include?('id')
59
      order_columns = has_id_column ? 'id' : column_names.join(', ')
60
      where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : ''
61
      sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}"
62
      data = ActiveRecord::Base.connection.select_all(sql)
63 66
      file.write data.inject({}) { |hash, record|
64 67
        # omit default or nil values or cast extracted values with formatting time
65 68
        columns.each do |col|
(13-13/14)