class MatryoshkaView::Record

Constants

COLUMNS

Public Class Methods

cleanup() click to toggle source
# File lib/matryoshka_view/record.rb, line 35
def cleanup
  find_each do |record|
    record.destroy unless record.exists?
  end
end
create_table() click to toggle source
# File lib/matryoshka_view/record.rb, line 7
def create_table
  activity = false
  connection_pool.with_connection do |c|
    unless table_exists?
      c.execute "CREATE TABLE #{quoted_table_name}(name text UNIQUE NOT NULL)"
      activity = true
    end
    existing_columns = column_names
    if (missing_columns = COLUMNS.keys - column_names).any?
      activity = true
      add_columns = missing_columns.map {|name| %{ADD COLUMN "#{name}" #{COLUMNS[name]}} }
      c.execute "ALTER TABLE #{quoted_table_name} #{add_columns.join(',')}"
      missing_columns.each do |name|
        case name
        when /the_geom/
          c.execute "CREATE INDEX ON #{quoted_table_name} USING gist(#{name})"
        else
          c.execute "CREATE INDEX ON #{quoted_table_name} (#{name})"
        end
      end
    end
    if activity
      c.schema_cache.clear!
      reset_column_information
    end
  end
end

Public Instance Methods

exists?() click to toggle source
# File lib/matryoshka_view/record.rb, line 63
def exists?
  MatryoshkaView.view_exists? name
end
view() click to toggle source
# File lib/matryoshka_view/record.rb, line 53
def view
  @view ||= begin
    save!
    unless exists?
      raise "missing #{name} (#{inspect})"
    end
    MatryoshkaView.new name: name, base: base, the_geom_geojson: the_geom_geojson
  end
end