class Mkxms::Mssql::TableType

Constants

SQL_OBJECT_TYPE

Attributes

name[RW]
schema[RW]

Public Class Methods

new(attrs) click to toggle source
# File lib/mkxms/mssql/table_type_handler.rb, line 138
def initialize(attrs)
  a = attrs
  info_ver = (a['eyewkas_ver'] || 1.0).to_f
  raise "mssql-eyewkas table-type ver. 1.1 or compatible required" if info_ver < 1.1 || info_ver >= 2
  @schema = a['schema']
  @name = a['name']
end

Public Instance Methods

to_sql() click to toggle source
# File lib/mkxms/mssql/table_type_handler.rb, line 149
def to_sql
  [].tap do |lines|
    lines << "CREATE TYPE #{qualified_name} AS TABLE ("
    columns.each_with_index do |col, i|
      lines << "  #{i == 0 ? " " : ","} #{col.name} #{col.type_spec}"
    end
    constraints.each do |c|
      lines << "  , #{c.to_sql}"
    end
    lines << ");"
    lines << extended_properties_sql
    columns.each do |col|
      lines << subitem_extended_properties_sql(col)
    end
  end
end