mkxms-mssql 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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