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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +53 -0
- data/Rakefile +1 -0
- data/bin/mkxms-mssql +5 -0
- data/lib/mkxms/mssql/access_object_definition.rb +61 -0
- data/lib/mkxms/mssql/adoption_script_writer.rb +1486 -0
- data/lib/mkxms/mssql/check_constraint_handler.rb +56 -0
- data/lib/mkxms/mssql/database_handler.rb +339 -0
- data/lib/mkxms/mssql/default_constraint_handler.rb +46 -0
- data/lib/mkxms/mssql/engine.rb +88 -0
- data/lib/mkxms/mssql/exceptions.rb +10 -0
- data/lib/mkxms/mssql/filegroup_handler.rb +81 -0
- data/lib/mkxms/mssql/foreign_key_handler.rb +85 -0
- data/lib/mkxms/mssql/function_handler.rb +74 -0
- data/lib/mkxms/mssql/indented_string_builder.rb +199 -0
- data/lib/mkxms/mssql/index_column.rb +11 -0
- data/lib/mkxms/mssql/index_handler.rb +98 -0
- data/lib/mkxms/mssql/keylike_constraint_helper.rb +67 -0
- data/lib/mkxms/mssql/permission_handler.rb +115 -0
- data/lib/mkxms/mssql/primary_key_handler.rb +36 -0
- data/lib/mkxms/mssql/property_handler.rb +87 -0
- data/lib/mkxms/mssql/query_cursor.rb +111 -0
- data/lib/mkxms/mssql/role_handler.rb +55 -0
- data/lib/mkxms/mssql/schema_handler.rb +42 -0
- data/lib/mkxms/mssql/sql_string_manipulators.rb +46 -0
- data/lib/mkxms/mssql/statistics_handler.rb +59 -0
- data/lib/mkxms/mssql/stored_procedure_handler.rb +65 -0
- data/lib/mkxms/mssql/table_handler.rb +180 -0
- data/lib/mkxms/mssql/unique_constraint_handler.rb +32 -0
- data/lib/mkxms/mssql/utils.rb +83 -0
- data/lib/mkxms/mssql/version.rb +5 -0
- data/lib/mkxms/mssql/view_handler.rb +58 -0
- data/lib/mkxms/mssql.rb +62 -0
- data/mkxms-mssql.gemspec +26 -0
- data/spec/utils/indented_string_builder_spec.rb +218 -0
- data/spec/utils/query_cursor_spec.rb +57 -0
- 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
|