mkxms-mssql 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +53 -0
  6. data/Rakefile +1 -0
  7. data/bin/mkxms-mssql +5 -0
  8. data/lib/mkxms/mssql/access_object_definition.rb +61 -0
  9. data/lib/mkxms/mssql/adoption_script_writer.rb +1486 -0
  10. data/lib/mkxms/mssql/check_constraint_handler.rb +56 -0
  11. data/lib/mkxms/mssql/database_handler.rb +339 -0
  12. data/lib/mkxms/mssql/default_constraint_handler.rb +46 -0
  13. data/lib/mkxms/mssql/engine.rb +88 -0
  14. data/lib/mkxms/mssql/exceptions.rb +10 -0
  15. data/lib/mkxms/mssql/filegroup_handler.rb +81 -0
  16. data/lib/mkxms/mssql/foreign_key_handler.rb +85 -0
  17. data/lib/mkxms/mssql/function_handler.rb +74 -0
  18. data/lib/mkxms/mssql/indented_string_builder.rb +199 -0
  19. data/lib/mkxms/mssql/index_column.rb +11 -0
  20. data/lib/mkxms/mssql/index_handler.rb +98 -0
  21. data/lib/mkxms/mssql/keylike_constraint_helper.rb +67 -0
  22. data/lib/mkxms/mssql/permission_handler.rb +115 -0
  23. data/lib/mkxms/mssql/primary_key_handler.rb +36 -0
  24. data/lib/mkxms/mssql/property_handler.rb +87 -0
  25. data/lib/mkxms/mssql/query_cursor.rb +111 -0
  26. data/lib/mkxms/mssql/role_handler.rb +55 -0
  27. data/lib/mkxms/mssql/schema_handler.rb +42 -0
  28. data/lib/mkxms/mssql/sql_string_manipulators.rb +46 -0
  29. data/lib/mkxms/mssql/statistics_handler.rb +59 -0
  30. data/lib/mkxms/mssql/stored_procedure_handler.rb +65 -0
  31. data/lib/mkxms/mssql/table_handler.rb +180 -0
  32. data/lib/mkxms/mssql/unique_constraint_handler.rb +32 -0
  33. data/lib/mkxms/mssql/utils.rb +83 -0
  34. data/lib/mkxms/mssql/version.rb +5 -0
  35. data/lib/mkxms/mssql/view_handler.rb +58 -0
  36. data/lib/mkxms/mssql.rb +62 -0
  37. data/mkxms-mssql.gemspec +26 -0
  38. data/spec/utils/indented_string_builder_spec.rb +218 -0
  39. data/spec/utils/query_cursor_spec.rb +57 -0
  40. metadata +142 -0
@@ -0,0 +1,57 @@
1
+ require 'mkxms/mssql/query_cursor'
2
+
3
+ describe Mkxms::Mssql::QueryCursor do
4
+ before :each do
5
+ allow(described_class).to receive(:generated_cursor_name).and_return("test_cursor")
6
+ end
7
+
8
+ let(:sql) {StringIO.new}
9
+
10
+ it "provides an basic cursor loop" do
11
+ described_class.new(
12
+ "SELECT schema_id, name FROM sys.schemas",
13
+ "@schema_id INT, @schema_name SYSNAME",
14
+ output_to: sql,
15
+ ).each_row do
16
+ sql.puts " -- Handle a row"
17
+ end
18
+
19
+ expect(sql.string).to eql("DECLARE @schema_id INT, @schema_name SYSNAME;\nDECLARE test_cursor CURSOR LOCAL FOR\nSELECT schema_id, name FROM sys.schemas;\nFETCH NEXT FROM test_cursor INTO @schema_id, @schema_name;\nWHILE @@FETCH_STATUS = 0\nBEGIN\n -- Handle a row\n FETCH NEXT FROM test_cursor INTO @schema_id, @schema_name;\nEND;\n")
20
+ end
21
+
22
+ it "provides a expectation loop" do
23
+ columns = {
24
+ foo: :ascending,
25
+ bar: :ascending,
26
+ baz: :descending,
27
+ }
28
+ described_class.new(
29
+ %Q{
30
+ SELECT c.name, ic.is_descending_key
31
+ FROM sys.index_columns ic
32
+ JOIN sys.columns c
33
+ ON ic.object_id = c.object_id
34
+ AND ic.column_id = c.column_id
35
+ WHERE ic.object_id = @relation_id
36
+ AND ic.index_id = @index_id
37
+ AND ic.key_ordinal >= 1
38
+ ORDER BY ic.key_ordinal
39
+ }.gsub(/\s+/, ' ').strip,
40
+ "@column_name SYSNAME, @is_sorted_descending BIT",
41
+ output_to: sql
42
+ ).expectations(
43
+ on_extra: ->{sql.puts "-- Handle extra entry/ies"}
44
+ ) do |test|
45
+ columns.each_pair do |name, direction|
46
+ test.row(
47
+ on_missing: ->{sql.puts "-- Handle missing entry"}
48
+ ) {
49
+ sql.puts "-- Test column name is #{name}."
50
+ sql.puts "-- Test is #{direction}."
51
+ }
52
+ end
53
+ end
54
+
55
+ expect(sql.string).to eql("DECLARE @column_name SYSNAME, @is_sorted_descending BIT;\nDECLARE test_cursor CURSOR LOCAL FOR\nSELECT c.name, ic.is_descending_key FROM sys.index_columns ic JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id WHERE ic.object_id = @relation_id AND ic.index_id = @index_id AND ic.key_ordinal >= 1 ORDER BY ic.key_ordinal;\nFETCH NEXT FROM test_cursor INTO @column_name, @is_sorted_descending;\nIF @@FETCH_STATUS <> 0\nBEGIN\n-- Handle missing entry\nEND ELSE BEGIN\n-- Test column name is foo.\n-- Test is ascending.\nEND;\nFETCH NEXT FROM test_cursor INTO @column_name, @is_sorted_descending;\nIF @@FETCH_STATUS <> 0\nBEGIN\n-- Handle missing entry\nEND ELSE BEGIN\n-- Test column name is bar.\n-- Test is ascending.\nEND;\nFETCH NEXT FROM test_cursor INTO @column_name, @is_sorted_descending;\nIF @@FETCH_STATUS <> 0\nBEGIN\n-- Handle missing entry\nEND ELSE BEGIN\n-- Test column name is baz.\n-- Test is descending.\nEND;\nFETCH NEXT FROM test_cursor INTO @column_name, @is_sorted_descending;\nIF @@FETCH_STATUS = 0\nBEGIN\n-- Handle extra entry/ies\nEND;\nCLOSE test_cursor; DEALLOCATE test_cursor;\n")
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mkxms-mssql
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Richard Weeks
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: xmigra
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ description: Build a complete set of XMigra source files from an XML document (as
70
+ produced by the mssql-eyewkas.sql script) describing an MS-SQL database.
71
+ email:
72
+ - rtweeks21@gmail.com
73
+ executables:
74
+ - mkxms-mssql
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - bin/mkxms-mssql
84
+ - lib/mkxms/mssql.rb
85
+ - lib/mkxms/mssql/access_object_definition.rb
86
+ - lib/mkxms/mssql/adoption_script_writer.rb
87
+ - lib/mkxms/mssql/check_constraint_handler.rb
88
+ - lib/mkxms/mssql/database_handler.rb
89
+ - lib/mkxms/mssql/default_constraint_handler.rb
90
+ - lib/mkxms/mssql/engine.rb
91
+ - lib/mkxms/mssql/exceptions.rb
92
+ - lib/mkxms/mssql/filegroup_handler.rb
93
+ - lib/mkxms/mssql/foreign_key_handler.rb
94
+ - lib/mkxms/mssql/function_handler.rb
95
+ - lib/mkxms/mssql/indented_string_builder.rb
96
+ - lib/mkxms/mssql/index_column.rb
97
+ - lib/mkxms/mssql/index_handler.rb
98
+ - lib/mkxms/mssql/keylike_constraint_helper.rb
99
+ - lib/mkxms/mssql/permission_handler.rb
100
+ - lib/mkxms/mssql/primary_key_handler.rb
101
+ - lib/mkxms/mssql/property_handler.rb
102
+ - lib/mkxms/mssql/query_cursor.rb
103
+ - lib/mkxms/mssql/role_handler.rb
104
+ - lib/mkxms/mssql/schema_handler.rb
105
+ - lib/mkxms/mssql/sql_string_manipulators.rb
106
+ - lib/mkxms/mssql/statistics_handler.rb
107
+ - lib/mkxms/mssql/stored_procedure_handler.rb
108
+ - lib/mkxms/mssql/table_handler.rb
109
+ - lib/mkxms/mssql/unique_constraint_handler.rb
110
+ - lib/mkxms/mssql/utils.rb
111
+ - lib/mkxms/mssql/version.rb
112
+ - lib/mkxms/mssql/view_handler.rb
113
+ - mkxms-mssql.gemspec
114
+ - spec/utils/indented_string_builder_spec.rb
115
+ - spec/utils/query_cursor_spec.rb
116
+ homepage: ''
117
+ licenses:
118
+ - MIT
119
+ metadata: {}
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubyforge_project:
136
+ rubygems_version: 2.2.1
137
+ signing_key:
138
+ specification_version: 4
139
+ summary: XMigra source files from MS-SQL database description.
140
+ test_files:
141
+ - spec/utils/indented_string_builder_spec.rb
142
+ - spec/utils/query_cursor_spec.rb