Module: Scenic::Statements
- Defined in:
- lib/scenic/statements.rb
Overview
Methods that are made available in migrations for managing Scenic views.
Instance Method Summary collapse
-
#create_view(name, version: 1, sql_definition: nil, materialized: false) ⇒ Object
Create a new database view.
-
#drop_view(name, revert_to_version: nil, materialized: false) ⇒ Object
Drop a database view by name.
-
#update_view(name, version: nil, revert_to_version: nil, materialized: false) ⇒ Object
Update a database view to a new version.
Instance Method Details
#create_view(name, version: 1, sql_definition: nil, materialized: false) ⇒ Object
Create a new database view.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/scenic/statements.rb', line 24 def create_view(name, version: 1, sql_definition: nil, materialized: false) if version.blank? && sql_definition.nil? raise( ArgumentError, "view_definition or version_number must be specified" ) end sql_definition ||= definition(name, version) if materialized Scenic.database.create_materialized_view(name, sql_definition) else Scenic.database.create_view(name, sql_definition) end end |
#drop_view(name, revert_to_version: nil, materialized: false) ⇒ Object
Drop a database view by name.
54 55 56 57 58 59 60 |
# File 'lib/scenic/statements.rb', line 54 def drop_view(name, revert_to_version: nil, materialized: false) if materialized Scenic.database.drop_materialized_view(name) else Scenic.database.drop_view(name) end end |
#update_view(name, version: nil, revert_to_version: nil, materialized: false) ⇒ Object
Update a database view to a new version.
The existing view is dropped and recreated using the supplied version
parameter.
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/scenic/statements.rb', line 80 def update_view(name, version: nil, revert_to_version: nil, materialized: false) if version.blank? raise ArgumentError, "version is required" end if materialized raise ArgumentError, "Updating materialized views is not supported "\ "because it would cause any indexes to be dropped. Please use "\ "'drop_view' followed by 'create_view', being sure to also recreate "\ "any previously-existing indexes." end drop_view name, revert_to_version: revert_to_version, materialized: materialized create_view(name, version: version, materialized: materialized) end |