Sha256: 1aac261314c67790f6918d46f43c441e60414b33d84bb33da69992b225b8756b

Contents?: true

Size: 1.1 KB

Versions: 16

Compression:

Stored size: 1.1 KB

Contents

class RenameTrafficSchema < Landable::Migration

  def traffic_schema
    "#{Landable.configuration.database_schema_prefix}landable_traffic"
  end

  def schema_exists(schema)
    execute("SELECT COUNT(*) FROM pg_namespace WHERE nspname = '#{schema}'")[0]["count"] == "1"
  end

  def move_objects(from_schema, to_schema, relkind, object_type)
    # move objects from public to new schema
    objects = select_all("
      SELECT o.relname
        FROM pg_class o
        JOIN pg_namespace n
        ON n.oid=o.relnamespace
        AND n.nspname = '#{from_schema}'
        AND o.relkind = '#{relkind}'
        ORDER BY o.relname
    ")

    objects.each do |object|
      sql = %{
        ALTER #{object_type} #{from_schema}.#{object['relname']}
          SET SCHEMA #{to_schema}
      }
      puts "Moving #{from_schema}.#{object['relname']} TO #{to_schema}"
      execute sql
    end
  end

  def up
    if schema_exists('traffic')
      execute("CREATE SCHEMA #{traffic_schema}")
      move_objects('traffic',"#{traffic_schema}",'r','TABLE')
      move_objects('traffic',"#{traffic_schema}",'S','SEQUENCE')
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
landable-1.13.1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.12.3 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.12.2 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.12.1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.11.1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.11.0 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.10.0.rc2 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.10.0.rc1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.9.2 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.9.1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.9.0 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.9.0.rc2 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.9.0.rc1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.8.0 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.7.1.rc1 db/migrate/20140224205516_rename_traffic_schema.rb
landable-1.7.0 db/migrate/20140224205516_rename_traffic_schema.rb