class PGTrunk::Operations::MaterializedViews::CreateMaterializedView
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/create_materialized_view.rb, line 135 def invert irreversible!("if_not_exists: true") if if_not_exists DropMaterializedView.new(name: name) end
to_sql(_version)
click to toggle source
# File lib/pg_trunk/operations/materialized_views/create_materialized_view.rb, line 131 def to_sql(_version) [create_view, *alter_columns, *create_comment, register_view].join(" ") end
Private Instance Methods
alter_columns()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/create_materialized_view.rb, line 152 def alter_columns return if columns.blank? sql = "ALTER MATERIALIZED VIEW #{name.to_sql}" sql << columns.flat_map(&:to_sql).join(", ") sql << ";" end
create_comment()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/create_materialized_view.rb, line 160 def create_comment return if comment.blank? <<~SQL COMMENT ON MATERIALIZED VIEW #{name.to_sql} IS $comment$#{comment}$comment$; SQL end
create_view()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/create_materialized_view.rb, line 142 def create_view sql = "CREATE MATERIALIZED VIEW" sql << " IF NOT EXISTS" if if_not_exists sql << " #{name.to_sql}" sql << " TABLESPACE #{tablespace.inspect}" if tablespace.present? sql << " AS #{sql_definition}" sql << " WITH NO DATA" if with_data == false sql << ";" end
register_view()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/create_materialized_view.rb, line 169 def register_view <<~SQL.squish INSERT INTO pg_trunk (oid, classid) SELECT oid, 'pg_class'::regclass FROM pg_class WHERE relname = #{name.quoted} AND relnamespace = #{name.namespace} AND relkind = 'm' ON CONFLICT DO NOTHING; SQL end