ajax-datatables-rails 1.4.0 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8603311c92aa4db99c7b94103de8ed606a61ffafaf630724517d479cd478331
4
- data.tar.gz: 2baccc608a73493ecb7c28570075a9dda5919c91010db322e98a9c8d7032b4be
3
+ metadata.gz: df0c98573d156527bb34590ddac2fb860c53c578b3be69306d71db1123c0c1df
4
+ data.tar.gz: bef2b0041b0755590c3d98607f9234514e289ce654cb4b34399b0f50211c8500
5
5
  SHA512:
6
- metadata.gz: e2097c47d5af467755b87bd09abe9551b1eeb6334476358508bc4615657b66c0ae2b38b7a4416475e3783f3e88f99d35be984c6c9a9e55e6ded40ee382f2ffbe
7
- data.tar.gz: 4fbbaf7373f5acb5548ff354e5d191e195598302756e6051bd37a2876fee4e4f8450d3b535c7e98fd5654923740286d6c67b29d4570868d816200e7568cf2ecc
6
+ metadata.gz: dcb780dd2416b592daadce7774a2002e37e81535399638012a7ae958c5385a31b79a544a72c80b914f0f2d3ab42dc9b483ac5c2953de7e82270971b3982f245e
7
+ data.tar.gz: c52b3cdb779556d89251b4434419aa269966d80e56c97479a87986c96d7889005d9222a4b6bbdf604ca120a320c2ce26efefcfdb58f1ffac099bc8f06cc17719
@@ -13,7 +13,7 @@ on:
13
13
 
14
14
  jobs:
15
15
  rspec:
16
- runs-on: ubuntu-20.04
16
+ runs-on: ubuntu-latest
17
17
 
18
18
  env:
19
19
  ORACLE_COOKIE: sqldev
@@ -23,7 +23,7 @@ jobs:
23
23
 
24
24
  services:
25
25
  postgres:
26
- image: 'postgres:13'
26
+ image: 'postgres:16'
27
27
  ports: ['5432:5432']
28
28
  env:
29
29
  POSTGRES_PASSWORD: postgres
@@ -52,28 +52,35 @@ jobs:
52
52
  fail-fast: false
53
53
  matrix:
54
54
  ruby:
55
+ - '3.3'
56
+ - '3.2'
55
57
  - '3.1'
56
58
  - '3.0'
57
59
  - '2.7'
60
+ - 'head'
58
61
  rails:
59
- - rails_5.2.8
60
- - rails_6.0.6
62
+ - rails_7.1.0
63
+ - rails_7.0.8
61
64
  - rails_6.1.7
62
- - rails_7.0.4
65
+ - rails_6.0.6
63
66
  adapter:
64
67
  - sqlite3
65
68
  - postgresql
66
69
  - mysql2
67
70
  - oracle_enhanced
71
+ - postgis
72
+ # - trilogy
68
73
  exclude:
69
- - ruby: '3.0'
70
- rails: rails_5.2.8
71
- - ruby: '3.1'
72
- rails: rails_5.2.8
74
+ - rails: rails_7.1.0
75
+ adapter: oracle_enhanced
76
+
77
+ - rails: rails_7.1.0
78
+ adapter: postgis
79
+ ruby: 2.7'
73
80
 
74
81
  steps:
75
82
  - name: Checkout
76
- uses: actions/checkout@v2
83
+ uses: actions/checkout@v4
77
84
 
78
85
  - name: Setup Ruby
79
86
  uses: ruby/setup-ruby@v1
@@ -88,19 +95,19 @@ jobs:
88
95
 
89
96
  # See: https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#mysql
90
97
  run: |
91
- if [ "${DB_ADAPTER}" = "mysql2" ]; then
98
+ if [[ "${DB_ADAPTER}" == "mysql2" ]] || [[ "${DB_ADAPTER}" == "trilogy" ]]; then
92
99
  sudo systemctl start mysql.service
93
100
  mysql -u root -proot -e 'create database ajax_datatables_rails;'
94
101
  fi
95
102
 
96
- if [ "${DB_ADAPTER}" = "oracle_enhanced" ]; then
103
+ if [[ "${DB_ADAPTER}" == "oracle_enhanced" ]]; then
97
104
  ./spec/install_oracle.sh
98
105
  # Fix error : libnnz11.so: cannot open shared object file: No such file or directory
99
106
  sudo ln -s ${ORACLE_HOME}/lib/libnnz11.so /usr/lib/libnnz11.so
100
107
  fi
101
108
 
102
109
  - name: Setup Ruby cache
103
- uses: actions/cache@v2
110
+ uses: actions/cache@v4
104
111
  with:
105
112
  path: vendor/bundle
106
113
  key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.rails }}-${{ matrix.adapter }}-${{ hashFiles('**/Gemfile.lock') }}
@@ -109,16 +116,19 @@ jobs:
109
116
 
110
117
  - name: Bundle
111
118
  env:
119
+ RUBY_VERSION: ${{ matrix.ruby }}
112
120
  RAILS_VERSION: ${{ matrix.rails }}
113
121
  DB_ADAPTER: ${{ matrix.adapter }}
114
122
  BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile
115
123
  run: |
116
- gem install bundler
124
+ if [[ "${RUBY_VERSION}" != "2.7" ]]; then
125
+ gem install bundler
126
+ fi
117
127
  bundle config path vendor/bundle
118
128
  bundle install --jobs 4 --retry 3
119
129
 
120
130
  - name: RSpec & publish code coverage
121
- uses: paambaati/codeclimate-action@v2.7.5
131
+ uses: paambaati/codeclimate-action@v5.0.0
122
132
  env:
123
133
  RAILS_VERSION: ${{ matrix.rails }}
124
134
  DB_ADAPTER: ${{ matrix.adapter }}
data/Appraisals CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'yaml'
4
4
 
5
- rails_versions = YAML.load(File.read('appraisal.yml'))
5
+ rails_versions = YAML.safe_load(File.read('appraisal.yml'))
6
6
 
7
7
  rails_versions.each do |version, gems|
8
8
  appraise "rails_#{version}" do
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.5.0 (2024-04-08)
4
+
5
+ * Drop support of Rails 5.2
6
+ * Add support for grouped results (merge: [#419](https://github.com/jbox-web/ajax-datatables-rails/pull/419))
7
+ * Fix server-side out of order ajax responses (merge: [#418](https://github.com/jbox-web/ajax-datatables-rails/pull/418))
8
+ * Add support for postgis adapter (merge: [#417](https://github.com/jbox-web/ajax-datatables-rails/pull/417))
9
+ * Add support for trilogy adapter (merge: [#423](https://github.com/jbox-web/ajax-datatables-rails/pull/423))
10
+ * Add support for Rails 7.1
11
+ * Add support for Ruby 3.3
12
+
13
+ This is the last version to support Rails 6.0.x and Ruby 2.7.x.
14
+
3
15
  ## 1.4.0 (2022-12-18)
4
16
 
5
17
  * Improve tests
data/Gemfile CHANGED
@@ -5,3 +5,4 @@ source 'https://rubygems.org'
5
5
  gemspec
6
6
 
7
7
  gem 'appraisal', git: 'https://github.com/n-rodriguez/appraisal.git', branch: 'wip/combustion'
8
+ gem 'combustion', git: 'https://github.com/pat/combustion.git'
data/README.md CHANGED
@@ -11,8 +11,8 @@
11
11
 
12
12
  It's tested against :
13
13
 
14
- * Rails 5.2.4 / 6.0.3 / 6.1.0
15
- * Ruby 2.5.x / 2.6.x / 2.7.x
14
+ * Rails 6.0.6 / 6.1.7 / 7.0.4
15
+ * Ruby 2.7 / 3.0 / 3.1
16
16
  * SQLite3
17
17
  * Postgresql 13
18
18
  * MySQL 8
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.files = `git ls-files`.split("\n")
25
25
 
26
- s.add_runtime_dependency 'rails', '>= 5.2'
26
+ s.add_runtime_dependency 'rails', '>= 6.0'
27
27
  s.add_runtime_dependency 'zeitwerk'
28
28
 
29
29
  s.add_development_dependency 'activerecord-oracle_enhanced-adapter'
data/appraisal.yml CHANGED
@@ -1,56 +1,131 @@
1
1
  ---
2
- 5.2.8:
2
+ 6.0.6:
3
3
  sqlite3:
4
- version: ~> 1.3.0
4
+ version: ~> 1.4.0
5
5
  install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
6
6
  mysql2:
7
7
  version: ''
8
8
  install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
9
+ activerecord-trilogy-adapter:
10
+ version: ''
11
+ install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
9
12
  activerecord-oracle_enhanced-adapter:
10
- version: ~> 5.2.0
13
+ version: ~> 6.0.0
11
14
  install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
12
15
  ruby-oci8:
13
16
  version: ''
14
17
  install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
18
+ activerecord-postgis-adapter:
19
+ version: ''
20
+ install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
21
+ base64:
22
+ version: ''
23
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
24
+ bigdecimal:
25
+ version: ''
26
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
27
+ mutex_m:
28
+ version: ''
29
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
30
+ drb:
31
+ version: ''
32
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
15
33
 
16
- 6.0.6:
34
+
35
+ 6.1.7:
17
36
  sqlite3:
18
37
  version: ~> 1.4.0
19
38
  install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
20
39
  mysql2:
21
40
  version: ''
22
41
  install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
42
+ activerecord-trilogy-adapter:
43
+ version: ''
44
+ install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
23
45
  activerecord-oracle_enhanced-adapter:
24
- version: ~> 6.0.0
46
+ version: ~> 6.1.0
25
47
  install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
26
48
  ruby-oci8:
27
49
  version: ''
28
50
  install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
51
+ activerecord-postgis-adapter:
52
+ version: ''
53
+ install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
54
+ base64:
55
+ version: ''
56
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
57
+ bigdecimal:
58
+ version: ''
59
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
60
+ mutex_m:
61
+ version: ''
62
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
63
+ drb:
64
+ version: ''
65
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
29
66
 
30
- 6.1.7:
67
+
68
+ 7.0.8:
31
69
  sqlite3:
32
70
  version: ~> 1.4.0
33
71
  install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
34
72
  mysql2:
35
73
  version: ''
36
74
  install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
75
+ activerecord-trilogy-adapter:
76
+ version: ''
77
+ install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
37
78
  activerecord-oracle_enhanced-adapter:
38
- version: ~> 6.1.0
79
+ version: ~> 7.0.0
39
80
  install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
40
81
  ruby-oci8:
41
82
  version: ''
42
83
  install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
84
+ activerecord-postgis-adapter:
85
+ version: ''
86
+ install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
87
+ base64:
88
+ version: ''
89
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
90
+ bigdecimal:
91
+ version: ''
92
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
93
+ mutex_m:
94
+ version: ''
95
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
96
+ drb:
97
+ version: ''
98
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
99
+
43
100
 
44
- 7.0.4:
101
+ 7.1.0:
45
102
  sqlite3:
46
103
  version: ~> 1.4.0
47
104
  install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
48
105
  mysql2:
49
106
  version: ''
50
107
  install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
51
- activerecord-oracle_enhanced-adapter:
52
- version: ~> 7.0.0
53
- install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
54
- ruby-oci8:
108
+ activerecord-trilogy-adapter:
55
109
  version: ''
56
- install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
110
+ install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
111
+ # activerecord-oracle_enhanced-adapter:
112
+ # version: ~> 7.0.0
113
+ # install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
114
+ # ruby-oci8:
115
+ # version: ''
116
+ # install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
117
+ activerecord-postgis-adapter:
118
+ version: ''
119
+ install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
120
+ base64:
121
+ version: ''
122
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
123
+ bigdecimal:
124
+ version: ''
125
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
126
+ mutex_m:
127
+ version: ''
128
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
129
+ drb:
130
+ version: ''
131
+ install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
@@ -3,6 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "combustion", git: "https://github.com/pat/combustion.git"
6
7
  gem "rails", "6.0.6"
7
8
 
8
9
  install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
@@ -13,9 +14,24 @@ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
14
  gem "mysql2"
14
15
  end
15
16
 
17
+ install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
18
+ gem "activerecord-trilogy-adapter"
19
+ end
20
+
16
21
  install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
22
  gem "activerecord-oracle_enhanced-adapter", "~> 6.0.0"
18
23
  gem "ruby-oci8"
19
24
  end
20
25
 
26
+ install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
27
+ gem "activerecord-postgis-adapter"
28
+ end
29
+
30
+ install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
31
+ gem "base64"
32
+ gem "bigdecimal"
33
+ gem "mutex_m"
34
+ gem "drb"
35
+ end
36
+
21
37
  gemspec path: "../"
@@ -3,6 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "combustion", git: "https://github.com/pat/combustion.git"
6
7
  gem "rails", "6.1.7"
7
8
 
8
9
  install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
@@ -13,9 +14,24 @@ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
14
  gem "mysql2"
14
15
  end
15
16
 
17
+ install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
18
+ gem "activerecord-trilogy-adapter"
19
+ end
20
+
16
21
  install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
22
  gem "activerecord-oracle_enhanced-adapter", "~> 6.1.0"
18
23
  gem "ruby-oci8"
19
24
  end
20
25
 
26
+ install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
27
+ gem "activerecord-postgis-adapter"
28
+ end
29
+
30
+ install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
31
+ gem "base64"
32
+ gem "bigdecimal"
33
+ gem "mutex_m"
34
+ gem "drb"
35
+ end
36
+
21
37
  gemspec path: "../"
@@ -3,7 +3,8 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
- gem "rails", "7.0.4"
6
+ gem "combustion", git: "https://github.com/pat/combustion.git"
7
+ gem "rails", "7.0.8"
7
8
 
8
9
  install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
9
10
  gem "sqlite3", "~> 1.4.0"
@@ -13,9 +14,24 @@ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
14
  gem "mysql2"
14
15
  end
15
16
 
17
+ install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
18
+ gem "activerecord-trilogy-adapter"
19
+ end
20
+
16
21
  install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
22
  gem "activerecord-oracle_enhanced-adapter", "~> 7.0.0"
18
23
  gem "ruby-oci8"
19
24
  end
20
25
 
26
+ install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
27
+ gem "activerecord-postgis-adapter"
28
+ end
29
+
30
+ install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
31
+ gem "base64"
32
+ gem "bigdecimal"
33
+ gem "mutex_m"
34
+ gem "drb"
35
+ end
36
+
21
37
  gemspec path: "../"
@@ -0,0 +1,32 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "combustion", git: "https://github.com/pat/combustion.git"
7
+ gem "rails", "7.1.0"
8
+
9
+ install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
10
+ gem "sqlite3", "~> 1.4.0"
11
+ end
12
+
13
+ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
14
+ gem "mysql2"
15
+ end
16
+
17
+ install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
18
+ gem "activerecord-trilogy-adapter"
19
+ end
20
+
21
+ install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
22
+ gem "activerecord-postgis-adapter"
23
+ end
24
+
25
+ install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
26
+ gem "base64"
27
+ gem "bigdecimal"
28
+ gem "mutex_m"
29
+ gem "drb"
30
+ end
31
+
32
+ gemspec path: "../"
@@ -77,7 +77,7 @@ module AjaxDatatablesRails
77
77
  recordsTotal: records_total_count,
78
78
  recordsFiltered: records_filtered_count,
79
79
  data: sanitize_data(data),
80
- }.merge(additional_data)
80
+ }.merge(draw_id).merge(additional_data)
81
81
  end
82
82
 
83
83
  # User helper methods
@@ -137,17 +137,26 @@ module AjaxDatatablesRails
137
137
  end
138
138
 
139
139
  def records_total_count
140
- fetch_records.count(:all)
140
+ numeric_count fetch_records.count(:all)
141
141
  end
142
142
 
143
143
  def records_filtered_count
144
- filter_records(fetch_records).count(:all)
144
+ numeric_count filter_records(fetch_records).count(:all)
145
+ end
146
+
147
+ def numeric_count(count)
148
+ count.is_a?(Hash) ? count.values.size : count
145
149
  end
146
150
 
147
151
  def global_search_delimiter
148
152
  GLOBAL_SEARCH_DELIMITER
149
153
  end
150
154
 
155
+ # See: https://datatables.net/manual/server-side#Returned-data
156
+ def draw_id
157
+ params[:draw].present? ? { draw: params[:draw].to_i } : {}
158
+ end
159
+
151
160
  def raw_records_error_text
152
161
  <<-ERROR
153
162
 
@@ -68,6 +68,7 @@ module AjaxDatatablesRails
68
68
  DB_ADAPTER_TYPE_CAST = {
69
69
  mysql: TYPE_CAST_MYSQL,
70
70
  mysql2: TYPE_CAST_MYSQL,
71
+ trilogy: TYPE_CAST_MYSQL,
71
72
  sqlite: TYPE_CAST_SQLITE,
72
73
  sqlite3: TYPE_CAST_SQLITE,
73
74
  oracle: TYPE_CAST_ORACLE,
@@ -45,9 +45,9 @@ module AjaxDatatablesRails
45
45
  return unless sort_nulls_last?
46
46
 
47
47
  case @adapter
48
- when :pg, :postgresql, :postgres, :oracle
48
+ when :pg, :postgresql, :postgres, :oracle, :postgis
49
49
  'NULLS LAST'
50
- when :mysql, :mysql2, :sqlite, :sqlite3
50
+ when :mysql, :mysql2, :trilogy, :sqlite, :sqlite3
51
51
  'IS NULL'
52
52
  else
53
53
  raise "unsupported database adapter: #{@adapter}"
@@ -8,7 +8,7 @@ module AjaxDatatablesRails
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 1
11
- MINOR = 4
11
+ MINOR = 5
12
12
  TINY = 0
13
13
  PRE = nil
14
14
 
@@ -181,6 +181,7 @@ RSpec.describe AjaxDatatablesRails::Base do
181
181
  data = datatable.as_json
182
182
  expect(data[:recordsTotal]).to eq 5
183
183
  expect(data[:recordsFiltered]).to eq 5
184
+ expect(data[:draw]).to eq 1
184
185
  expect(data[:data]).to be_a(Array)
185
186
  expect(data[:data].size).to eq 5
186
187
  end
@@ -192,6 +193,7 @@ RSpec.describe AjaxDatatablesRails::Base do
192
193
  data = datatable.as_json
193
194
  expect(data[:recordsTotal]).to eq 5
194
195
  expect(data[:recordsFiltered]).to eq 5
196
+ expect(data[:draw]).to eq 1
195
197
  expect(data[:data]).to be_a(Array)
196
198
  expect(data[:data].size).to eq 5
197
199
  expect(data[:foo]).to eq 'bar'
@@ -168,6 +168,11 @@ RSpec.describe AjaxDatatablesRails::Datatable::Column do
168
168
  expect(column.send(:type_cast)).to eq('VARCHAR')
169
169
  end
170
170
 
171
+ it 'returns VARCHAR if :db_adapter is :postgis' do
172
+ expect(datatable).to receive(:db_adapter) { :postgis }
173
+ expect(column.send(:type_cast)).to eq('VARCHAR')
174
+ end
175
+
171
176
  it 'returns VARCHAR2(4000) if :db_adapter is :oracle' do
172
177
  expect(datatable).to receive(:db_adapter) { :oracle }
173
178
  expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
@@ -183,6 +188,11 @@ RSpec.describe AjaxDatatablesRails::Datatable::Column do
183
188
  expect(column.send(:type_cast)).to eq('CHAR')
184
189
  end
185
190
 
191
+ it 'returns CHAR if :db_adapter is :trilogy' do
192
+ expect(datatable).to receive(:db_adapter) { :trilogy }
193
+ expect(column.send(:type_cast)).to eq('CHAR')
194
+ end
195
+
186
196
  it 'returns CHAR if :db_adapter is :mysql' do
187
197
  expect(datatable).to receive(:db_adapter) { :mysql }
188
198
  expect(column.send(:type_cast)).to eq('CHAR')
@@ -42,6 +42,14 @@ RSpec.describe AjaxDatatablesRails::Datatable::SimpleOrder do
42
42
  end
43
43
  end
44
44
 
45
+ context 'with postgis database adapter' do
46
+ before { parent.db_adapter = :postgis }
47
+
48
+ it 'sql query' do
49
+ expect(nulls_last_order.query('email')).to eq('email DESC NULLS LAST')
50
+ end
51
+ end
52
+
45
53
  context 'with sqlite database adapter' do
46
54
  before { parent.db_adapter = :sqlite }
47
55
 
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
6
+
7
+ let(:datatable) { ComplexDatatable.new(sample_params) }
8
+ let(:records) { User.all }
9
+
10
+ describe '#records_total_count' do
11
+ context 'ungrouped results' do
12
+ it 'returns the count' do
13
+ expect(datatable.send(:records_total_count)).to eq records.count
14
+ end
15
+ end
16
+
17
+ context 'grouped results' do
18
+ let(:datatable) { GroupedDatatable.new(sample_params) }
19
+
20
+ it 'returns the count' do
21
+ expect(datatable.send(:records_total_count)).to eq records.count
22
+ end
23
+ end
24
+ end
25
+
26
+
27
+ describe '#records_filtered_count' do
28
+ context 'ungrouped results' do
29
+ it 'returns the count' do
30
+ expect(datatable.send(:records_filtered_count)).to eq records.count
31
+ end
32
+ end
33
+
34
+ context 'grouped results' do
35
+ let(:datatable) { GroupedDatatable.new(sample_params) }
36
+
37
+ it 'returns the count' do
38
+ expect(datatable.send(:records_filtered_count)).to eq records.count
39
+ end
40
+ end
41
+ end
42
+ end
@@ -202,6 +202,16 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
202
202
  )
203
203
  end
204
204
  end
205
+
206
+ context 'when db_adapter is trilogy' do
207
+ it 'can call #to_sql on returned object' do
208
+ result = datatable.build_conditions_for_selected_columns
209
+ expect(result).to respond_to(:to_sql)
210
+ expect(result.to_sql).to eq(
211
+ "CAST(`users`.`username` AS CHAR) LIKE '%doe%' AND CAST(`users`.`email` AS CHAR) LIKE '%example%'"
212
+ )
213
+ end
214
+ end
205
215
  end
206
216
  end
207
217
 
@@ -4,12 +4,12 @@ test:
4
4
  database: ajax_datatables_rails
5
5
  encoding: utf8
6
6
 
7
- <% if adapter == 'postgresql' %>
7
+ <% if adapter == 'postgresql' || adapter == 'postgis' %>
8
8
  host: '127.0.0.1'
9
9
  port: 5432
10
10
  username: 'postgres'
11
11
  password: 'postgres'
12
- <% elsif adapter == 'mysql2' %>
12
+ <% elsif adapter == 'mysql2' || adapter == 'trilogy' %>
13
13
  host: '127.0.0.1'
14
14
  port: 3306
15
15
  username: 'root'
data/spec/spec_helper.rb CHANGED
@@ -73,11 +73,11 @@ class RunningSpec
73
73
  end
74
74
 
75
75
  def self.mysql?
76
- ENV['DB_ADAPTER'] == 'mysql2'
76
+ ENV['DB_ADAPTER'] == 'mysql2' || ENV['DB_ADAPTER'] == 'trilogy'
77
77
  end
78
78
 
79
79
  def self.postgresql?
80
- ENV['DB_ADAPTER'] == 'postgresql'
80
+ ENV['DB_ADAPTER'] == 'postgresql' || ENV['DB_ADAPTER'] == 'postgis'
81
81
  end
82
82
  end
83
83
 
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class GroupedDatatable < ComplexDatatable
4
+
5
+ def get_raw_records
6
+ User.all.group(:id)
7
+ end
8
+ end
@@ -70,9 +70,9 @@ end
70
70
 
71
71
  def nulls_last_sql(datatable)
72
72
  case datatable.db_adapter
73
- when :pg, :postgresql, :postgres, :oracle
73
+ when :pg, :postgresql, :postgres, :oracle, :postgis
74
74
  'NULLS LAST'
75
- when :mysql, :mysql2, :sqlite, :sqlite3
75
+ when :mysql, :mysql2, :trilogy, :sqlite, :sqlite3
76
76
  'IS NULL'
77
77
  else
78
78
  raise 'unsupported database adapter'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ajax-datatables-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Quenneville
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-12-18 00:00:00.000000000 Z
12
+ date: 2024-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.2'
20
+ version: '6.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '5.2'
27
+ version: '6.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: zeitwerk
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -311,10 +311,10 @@ files:
311
311
  - config.ru
312
312
  - doc/migrate.md
313
313
  - doc/webpack.md
314
- - gemfiles/rails_5.2.8.gemfile
315
314
  - gemfiles/rails_6.0.6.gemfile
316
315
  - gemfiles/rails_6.1.7.gemfile
317
- - gemfiles/rails_7.0.4.gemfile
316
+ - gemfiles/rails_7.0.8.gemfile
317
+ - gemfiles/rails_7.1.0.gemfile
318
318
  - lib/ajax-datatables-rails.rb
319
319
  - lib/ajax-datatables-rails/active_record.rb
320
320
  - lib/ajax-datatables-rails/base.rb
@@ -337,6 +337,7 @@ files:
337
337
  - spec/ajax-datatables-rails/datatable/datatable_spec.rb
338
338
  - spec/ajax-datatables-rails/datatable/simple_order_spec.rb
339
339
  - spec/ajax-datatables-rails/datatable/simple_search_spec.rb
340
+ - spec/ajax-datatables-rails/orm/active_record_count_records_spec.rb
340
341
  - spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb
341
342
  - spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb
342
343
  - spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb
@@ -359,6 +360,7 @@ files:
359
360
  - spec/support/datatables/datatable_cond_unknown.rb
360
361
  - spec/support/datatables/datatable_custom_column.rb
361
362
  - spec/support/datatables/datatable_order_nulls_last.rb
363
+ - spec/support/datatables/grouped_datatable_array.rb
362
364
  - spec/support/helpers/params.rb
363
365
  - spec/support/models/user.rb
364
366
  homepage: https://github.com/jbox-web/ajax-datatables-rails
@@ -384,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
384
386
  - !ruby/object:Gem::Version
385
387
  version: '0'
386
388
  requirements: []
387
- rubygems_version: 3.3.26
389
+ rubygems_version: 3.5.7
388
390
  signing_key:
389
391
  specification_version: 4
390
392
  summary: A gem that simplifies using datatables and hundreds of records via ajax
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
- gem "rails", "5.2.8"
7
-
8
- install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
9
- gem "sqlite3", "~> 1.3.0"
10
- end
11
-
12
- install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
- gem "mysql2"
14
- end
15
-
16
- install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
- gem "activerecord-oracle_enhanced-adapter", "~> 5.2.0"
18
- gem "ruby-oci8"
19
- end
20
-
21
- gemspec path: "../"