Sha256: ce91f29262d140a48ca2b5c73758b7a9a5f2fd93bdfc3409e45b915fadc06369
Contents?: true
Size: 1.81 KB
Versions: 2
Compression:
Stored size: 1.81 KB
Contents
module SchemaPlus::Views module Middleware module Dumper module Tables # Dump views def after(env) re_view_referent = %r{(?:(?i)FROM|JOIN) \S*\b(\S+)\b} env.connection.views.each do |view_name| next if env.dumper.ignored?(view_name) view = View.new(name: view_name, definition: env.connection.view_definition(view_name)) env.dump.tables[view.name] = view env.dump.depends(view.name, view.definition.scan(re_view_referent).flatten) end end # quacks like a SchemaMonkey Dump::Table class View < KeyStruct[:name, :definition] def assemble(stream) heredelim = "END_VIEW_#{name.upcase}" stream.puts <<-ENDVIEW create_view "#{name}", <<-'#{heredelim}', :force => true #{definition} #{heredelim} ENDVIEW end end end end module Schema module Tables module Mysql def after(env) Tables.filter_out_views(env) end end module Sqlite3 def after(env) Tables.filter_out_views(env) end end def self.filter_out_views(env) env.tables -= env.connection.views(env.query_name) end end end # # Define new middleware stacks patterned on SchemaPlus::Core's naming # for tables module Schema module Views ENV = [:connection, :query_name, :views] end module ViewDefinition ENV = [:connection, :view_name, :query_name, :definition] end end module Migration module CreateView ENV = [:connection, :view_name, :definition, :options] end module DropView ENV = [:connection, :view_name, :options] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
schema_plus_views-0.3.1 | lib/schema_plus/views/middleware.rb |
schema_plus_views-0.3.0 | lib/schema_plus/views/middleware.rb |