activerecord-advantage-adapter 0.1.6 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d10f6102f8391080901ec11c4394d7b47cfab4b7072f2ca7255e44a05c138a3
4
- data.tar.gz: 7aece77305d027f0d6e1ceec3fd3b0e07a3a10c92eccd24d853ab3a504a17881
3
+ metadata.gz: 0b99c457f121d0e626de75648f383a4c74e4e1068de8299fa4676f6174bb90c3
4
+ data.tar.gz: 2ef0863fd117d012ec8bf3fcc62daff584f66d28124db927d159c3113fbbcbc6
5
5
  SHA512:
6
- metadata.gz: b5cfeeb5eb5080e7ccb15594e4b0d2e0cb3defdbdbb94b8b9d8c39b0c09128f69c332e506f28ce9d84f8db7698a700f202403aa1be74abdbc3692b143cd76309
7
- data.tar.gz: c5c2245d339343294ea183cb5c1cd2a76f88619c275f26683bcf9bcac841550f65ec3e2b52e4696534030b4b1b10d897ed765ef5d79af7ac1e898c332bf990d6
6
+ metadata.gz: 04d3efce90e1c6cd0c8a4cf13c5a3f2b0f7152e97c401e2341463ce9e59e0c26b809eb39c506207e25e705cbe4b1e33e8641dceea9e8dd4dac1f3d9ed043b25b
7
+ data.tar.gz: 316c0e9ec840e759fa74e63767f7314ab4873e12a0b6abc2bf269e3e16b59e620f4f9be84226f8934b5f59c8a2619af472a8d349632f6d9d6e1ef35f495ba45a
@@ -1,7 +1,7 @@
1
1
  lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
- pkg_version = "0.1.6"
4
+ pkg_version = "0.1.8"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'activerecord-advantage-adapter'
@@ -39,8 +39,8 @@ Gem::Specification.new do |spec|
39
39
  'activerecord-advantage-adapter.gemspec']
40
40
  spec.require_paths = ['lib']
41
41
 
42
- spec.add_development_dependency 'bundler', '~> 1.17'
43
- spec.add_development_dependency 'rake', '~> 10.0'
42
+ spec.add_development_dependency 'bundler', '~> 2.2.10'
43
+ spec.add_development_dependency 'rake', '~> 12.3.3'
44
44
  spec.add_development_dependency 'rspec', '~> 3.0'
45
45
 
46
46
  spec.add_runtime_dependency 'advantage', '~> 0.1', '>= 0.1.2'
@@ -20,8 +20,8 @@
20
20
  #
21
21
  #====================================================
22
22
 
23
- require "active_record/connection_adapters/abstract_adapter"
24
- require "arel/visitors/advantage.rb"
23
+ require 'active_record/connection_adapters/abstract_adapter'
24
+ require 'arel/visitors/advantage'
25
25
 
26
26
  # Singleton class to hold a valid instance of the AdvantageInterface across all connections
27
27
  class ADS
@@ -62,6 +62,23 @@ module ActiveRecord
62
62
  end
63
63
  end
64
64
 
65
+ # copied and modified from "relation/calculations.rb"
66
+ module Calculations
67
+ def count(column_name = nil)
68
+ if block_given?
69
+ unless column_name.nil?
70
+ raise ArgumentError, "Column name argument is not supported when a block is passed."
71
+ end
72
+ super()
73
+ elsif column_name.nil?
74
+ # ADS doesn't like counting multiple columns, so if there is no column, force the primary_key
75
+ calculate(:count, self.primary_key)
76
+ else
77
+ calculate(:count, column_name)
78
+ end
79
+ end
80
+ end
81
+
65
82
  module ConnectionAdapters
66
83
  class AdvantageException < StandardError
67
84
  attr_reader :errno
@@ -240,7 +257,7 @@ module ActiveRecord
240
257
  log(sql, 'delete', binds) { exec_query(sql, binds) }
241
258
  end
242
259
 
243
- def exec_query(sql, name = "SQL", _binds = [])
260
+ def exec_query(sql, name = "SQL", _binds = [], **_options)
244
261
  cols, record = execute(sql, name)
245
262
  ActiveRecord::Result.new(cols, record)
246
263
  end
@@ -309,6 +326,14 @@ module ActiveRecord
309
326
  select(sql, name).map { |row| strip_or_self(row['TABLE_NAME']) }
310
327
  end
311
328
 
329
+ if Rails::VERSION::MAJOR == 5
330
+ # this really needs fixing, in the case where a database contains views, but that requires
331
+ # a "data dictionary", and I'm testing against a collection of "database tables"
332
+ def views(_name = nil)
333
+ []
334
+ end
335
+ end
336
+
312
337
  # Return a list of columns
313
338
  def columns(table_name, _name = nil) #:nodoc:
314
339
  table_structure(table_name).map do |field|
@@ -456,9 +481,9 @@ SQL
456
481
  protected
457
482
 
458
483
  # Execute a query
459
- def select(sql, name = nil, binds = []) #:nodoc:
484
+ def select(sql, name = nil, binds = [], **options) #:nodoc:
460
485
  if Rails::VERSION::MAJOR >= 4
461
- exec_query(sql, name, binds)
486
+ exec_query(sql, name, binds, **options)
462
487
  else
463
488
  exec_query(sql, name, binds).to_hash
464
489
  end
@@ -486,17 +511,49 @@ SQL
486
511
  options.include?(:default) && !(options[:null] == false && options[:default].nil?)
487
512
  end
488
513
 
514
+
489
515
  private
490
516
 
517
+ def type_map
518
+ @type_map ||= Type::TypeMap.new.tap { |m| initialize_type_map(m) }
519
+ end
520
+
521
+ # copied from "connection_adapters/abstract_adapter.rb"
522
+ def register_class(mapping, key, klass)
523
+ mapping.register_type(key) do |*args|
524
+ klass.new
525
+ end
526
+ end
527
+
491
528
  # Used in the lookup_cast_type procedure
492
- def initialize_type_map(m = type_map)
493
- super
529
+ def initialize_type_map(m)
530
+ register_class m, %r(boolean)i, Type::Boolean
531
+ register_class m, %r(char)i, Type::String
532
+ register_class m, %r(binary)i, Type::Binary
533
+ register_class m, %r(text)i, Type::Text
534
+ register_class m, %r(date)i, Type::Date
535
+ register_class m, %r(time)i, Type::Time
536
+ register_class m, %r(datetime)i, Type::DateTime
537
+ register_class m, %r(float)i, Type::Float
538
+ register_class m, %r(int)i, Type::Integer
539
+ register_class m, %r(decimal)i, Type::Decimal
540
+
541
+ m.alias_type %r(logical)i, "boolean"
542
+ m.alias_type %r(numeric)i, "decimal"
543
+ m.alias_type %r(string)i, "char"
494
544
  m.alias_type %r(memo)i, "char"
545
+ m.alias_type %r(image)i, "binary"
546
+ m.alias_type %r(varchar)i, "char"
547
+ m.alias_type %r(timestamp)i, "datetime"
548
+ m.alias_type %r(number)i, "decimal"
549
+ m.alias_type %r(money)i, "decimal"
550
+ m.alias_type %r(double)i, "float"
551
+
495
552
  m.alias_type %r(long binary)i, "binary"
496
553
  m.alias_type %r(integer)i, "int"
497
554
  m.alias_type %r(short)i, "int"
498
555
  m.alias_type %r(autoinc)i, "int"
499
- m.alias_type %r(logical)i, "boolean"
556
+ m.alias_type %r(raw)i, "binary"
500
557
  end
501
558
 
502
559
  # Connect
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-advantage-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgar Sherman
8
8
  - Jon Adams
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-06-10 00:00:00.000000000 Z
12
+ date: 2023-06-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.17'
20
+ version: 2.2.10
21
21
  type: :development
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: '1.17'
27
+ version: 2.2.10
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: 12.3.3
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: 12.3.3
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,7 @@ metadata:
95
95
  homepage_uri: http://devzone.advantagedatabase.com
96
96
  source_code_uri: https://github.com/t12nslookup/activerecord-advantage-adapter/
97
97
  changelog_uri: https://github.com/t12nslookup/activerecord-advantage-adapter/blob/main/CHANGELOG.md
98
- post_install_message:
98
+ post_install_message:
99
99
  rdoc_options: []
100
100
  require_paths:
101
101
  - lib
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  version: '0'
112
112
  requirements: []
113
113
  rubygems_version: 3.1.4
114
- signing_key:
114
+ signing_key:
115
115
  specification_version: 4
116
116
  summary: ActiveRecord driver for Advantage
117
117
  test_files: []