Module: Mkxms::Mssql

Defined in:
lib/mkxms/mssql.rb,
lib/mkxms/mssql/utils.rb,
lib/mkxms/mssql/engine.rb,
lib/mkxms/mssql/version.rb,
lib/mkxms/mssql/exceptions.rb,
lib/mkxms/mssql/index_column.rb,
lib/mkxms/mssql/query_cursor.rb,
lib/mkxms/mssql/role_handler.rb,
lib/mkxms/mssql/view_handler.rb,
lib/mkxms/mssql/index_handler.rb,
lib/mkxms/mssql/table_handler.rb,
lib/mkxms/mssql/schema_handler.rb,
lib/mkxms/mssql/database_handler.rb,
lib/mkxms/mssql/function_handler.rb,
lib/mkxms/mssql/property_handler.rb,
lib/mkxms/mssql/filegroup_handler.rb,
lib/mkxms/mssql/permission_handler.rb,
lib/mkxms/mssql/statistics_handler.rb,
lib/mkxms/mssql/foreign_key_handler.rb,
lib/mkxms/mssql/primary_key_handler.rb,
lib/mkxms/mssql/adoption_script_writer.rb,
lib/mkxms/mssql/indented_string_builder.rb,
lib/mkxms/mssql/sql_string_manipulators.rb,
lib/mkxms/mssql/access_object_definition.rb,
lib/mkxms/mssql/check_constraint_handler.rb,
lib/mkxms/mssql/stored_procedure_handler.rb,
lib/mkxms/mssql/keylike_constraint_helper.rb,
lib/mkxms/mssql/unique_constraint_handler.rb,
lib/mkxms/mssql/default_constraint_handler.rb

Defined Under Namespace

Modules: AccessObjectDefinition, ExtendedProperties, Property, SqlStringManipulators, Utils Classes: AdoptionScriptWriter, CheckConstraint, CheckConstraintHandler, Column, DatabaseFile, DatabaseHandler, DefaultConstraint, DefaultConstraintHandler, Engine, Filegroup, FilegroupHandler, ForeignKey, ForeignKeyHandler, Function, FunctionHandler, IndentedStringBuilder, Index, IndexHandler, KeylikeConstraint, Permission, PermissionGroup, PermissionHandler, PrimaryKey, PrimaryKeyHandler, ProgramArgumentError, PropertyHandler, QueryCursor, Role, RoleHandler, Schema, SchemaHandler, Statistics, StatisticsHandler, StoredProcedure, StoredProcedureHandler, Table, TableHandler, UniqueConstraint, UniqueConstraintHandler, UnsupportedFeatureError, View, ViewHandler

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.generate_from(document, options) ⇒ Object



30
31
32
33
34
35
# File 'lib/mkxms/mssql.rb', line 30

def self.generate_from(document, options)
  db_handler = DatabaseHandler.new(**(options.to_h))
  engine = Engine.new(document, db_handler)
  engine.run
  db_handler.create_source_files
end

.parse_argv(argv = ARGV.dup) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mkxms/mssql.rb', line 8

def self.parse_argv(argv = ARGV.dup)
  options = OpenStruct.new
  optparser = OptionParser.new do |flags|
    flags.banner = "Usage: #{File.basename($0)} [<option> [<option> ...]] [DB_DESCRIPTION_FILE]"
    flags.separator ''
    flags.separator 'Options:'
    
    options.schema_dir = Pathname.pwd
    flags.on('-o', '--outdir=SCHEMA_DIR', "Output in SCHEMA_DIR") do |schema_dir|
      options.schema_dir = Pathname(schema_dir).expand_path
    end
  end
  
  db_files = optparser.parse(argv)
  case db_files.length
  when ->(n) {n > 1}
    "Too many DB_DESCRIPTION_FILEs given"
  end.tap {|msg| raise ProgramArgumentError.new(msg) if msg}
  
  return [db_files[0], options]
end

.run_program(argv = ARGV.dup) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/mkxms/mssql.rb', line 45

def self.run_program(argv = ARGV.dup)
  description_file, options = parse_argv(argv)
  document = with_db_description_io(description_file) do |xml_file|
    REXML::Document.new(xml_file)
  end
  generate_from(document, options)
end

.with_db_description_io(file_path, &blk) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/mkxms/mssql.rb', line 37

def self.with_db_description_io(file_path, &blk)
  if file_path
    File.open(file_path, 'r', &blk)
  else
    blk.call($stdin)
  end
end