Skip to content

Commit fc02268

Browse files
committed
Add Rudimentary support for Microsoft SQL Server
See: #306
1 parent 66e81ba commit fc02268

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

lib/ajax-datatables-rails/datatable/column.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@ module AjaxDatatablesRails
44
module Datatable
55
class Column
66

7-
TYPE_CAST_DEFAULT = 'VARCHAR'
8-
TYPE_CAST_MYSQL = 'CHAR'
9-
TYPE_CAST_SQLITE = 'TEXT'
10-
TYPE_CAST_ORACLE = 'VARCHAR2(4000)'
7+
TYPE_CAST_DEFAULT = 'VARCHAR'
8+
TYPE_CAST_MYSQL = 'CHAR'
9+
TYPE_CAST_SQLITE = 'TEXT'
10+
TYPE_CAST_ORACLE = 'VARCHAR2(4000)'
11+
TYPE_CAST_SQLSERVER = 'VARCHAR(4000)'
1112

1213
DB_ADAPTER_TYPE_CAST = {
1314
mysql: TYPE_CAST_MYSQL,
1415
mysql2: TYPE_CAST_MYSQL,
1516
sqlite: TYPE_CAST_SQLITE,
1617
sqlite3: TYPE_CAST_SQLITE,
1718
oracle: TYPE_CAST_ORACLE,
18-
oracleenhanced: TYPE_CAST_ORACLE
19+
oracleenhanced: TYPE_CAST_ORACLE,
20+
sqlserver: TYPE_CAST_SQLSERVER,
1921
}.freeze
2022

2123
attr_reader :datatable, :index, :options

spec/ajax-datatables-rails/datatable/column_spec.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,12 @@
167167
expect(column.send(:type_cast)).to eq('VARCHAR')
168168
end
169169

170-
it 'returns VARCHAR if :db_adapter is :oracle' do
170+
it 'returns VARCHAR2(4000) if :db_adapter is :oracle' do
171171
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :oracle }
172172
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
173173
end
174174

175-
it 'returns VARCHAR if :db_adapter is :oracleenhanced' do
175+
it 'returns VARCHAR2(4000) if :db_adapter is :oracleenhanced' do
176176
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :oracleenhanced }
177177
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
178178
end
@@ -196,5 +196,10 @@
196196
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :sqlite3 }
197197
expect(column.send(:type_cast)).to eq('TEXT')
198198
end
199+
200+
it 'returns VARCHAR(4000) if :db_adapter is :sqlserver' do
201+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :sqlserver }
202+
expect(column.send(:type_cast)).to eq('VARCHAR(4000)')
203+
end
199204
end
200205
end

0 commit comments

Comments
 (0)