class Scenic::Adapters::SqlServer::Views

Attributes

connection[R]

Public Class Methods

new(connection) click to toggle source
# File lib/scenic/adapters/sql_server/views.rb, line 6
def initialize(connection)
  @connection = connection
end

Public Instance Methods

all() click to toggle source
# File lib/scenic/adapters/sql_server/views.rb, line 10
def all
  views_from_sql_server.map(&method(:to_scenic_view))
end

Private Instance Methods

extract_definition(result) click to toggle source
# File lib/scenic/adapters/sql_server/views.rb, line 34
def extract_definition(result)
  result['definition'].strip.sub(/\A.*#{result['name']}\W*AS\s*/, '')
end
to_scenic_view(result) click to toggle source
# File lib/scenic/adapters/sql_server/views.rb, line 26
def to_scenic_view(result)
  Scenic::View.new(
    name: result['name'],
    definition: extract_definition(result),
    materialized: false,
  )
end
views_from_sql_server() click to toggle source
# File lib/scenic/adapters/sql_server/views.rb, line 18
        def views_from_sql_server
          connection.exec_query(<<~SQL)
            SELECT v.name, sm.definition
            FROM sys.views v
              INNER JOIN sys.sql_modules sm ON v.object_id = sm.object_id
          SQL
        end