ardm-do-adapter 1.2.0 → 1.2.1

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
  SHA1:
3
- metadata.gz: 1f38f8747b0bde45cd4b0003875124b33bbfbda7
4
- data.tar.gz: 60395ab8432a9283b71f896acf170d5f3bf58063
3
+ metadata.gz: c82bd91805f6089e2010a5ce2b19fdc7d10d620f
4
+ data.tar.gz: 6a3737cdcd799f08b304d808efd0ede9792fb19a
5
5
  SHA512:
6
- metadata.gz: 47a3826335e162e1dfcdee50eaacf4224b9ea8797835c7574c613566837dc2f41316ac130a45f57d8e193054017319692a87d065f0ccdd9614c3422f32c05500
7
- data.tar.gz: c262903e1f1b63333ab0f04da7d7274e807fc7c877a9f014409c50340fd1c1f1796dbf9f29a07fe66f112e1bdfa2c42abffe39222191b87b34b3eb702dd50f55
6
+ metadata.gz: 90a587c722695538d67e414858d9c27dfa02055fe3df80c234b3a115ce47378fe26b0b4d22ca101f0e80992f61e442831a8bb86b5ba6bd038a3e1bf4c60547e5
7
+ data.tar.gz: da5713ace4d2fe7b8619b203042890dccf71446f45f320b166d0261a1f4d6a8871d1ae3c225d3ff888166cbf2f7f426898568dd37289860ec80d1a9625da555e
data/Gemfile CHANGED
@@ -7,7 +7,7 @@ gemspec
7
7
  SOURCE = ENV.fetch('SOURCE', :git).to_sym
8
8
  REPO_POSTFIX = SOURCE == :path ? '' : '.git'
9
9
  DATAMAPPER = SOURCE == :path ? Pathname(__FILE__).dirname.parent : 'http://github.com/ar-dm'
10
- DM_VERSION = '~> 1.2.0'
10
+ DM_VERSION = '~> 1.2'
11
11
  DO_VERSION = '~> 0.10.6'
12
12
  CURRENT_BRANCH = ENV.fetch('GIT_BRANCH', 'master')
13
13
 
@@ -0,0 +1,18 @@
1
+ [![Gem Version](https://badge.fury.io/rb/ardm-do-adapter.png)][gem]
2
+ [![Build Status](https://travis-ci.org/ar-dm/ardm-do-adapter.png?branch=master)][travis]
3
+ [![Dependency Status](https://gemnasium.com/ar-dm/ardm-do-adapter.png?travis)][gemnasium]
4
+
5
+ [gem]: https://rubygems.org/gems/ardm-do-adapter
6
+ [travis]: https://travis-ci.org/ar-dm/ardm-do-adapter
7
+ [gemnasium]: https://gemnasium.com/ar-dm/ardm-do-adapter
8
+
9
+ # ardm-do-adapter
10
+
11
+ A fork of [`dm-do-adapter`](https://github.com/datamapper/dm-do-adapter).
12
+
13
+ ## Install
14
+
15
+ See [ardm-core](https://github.com/ar-dm/ardm-core) for more information.
16
+
17
+ Unless they are specific to this gem, please ask general `ardm-` questions
18
+ and open issues on `ardm-core`.
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.files = `git ls-files`.split("\n")
16
16
  gem.test_files = `git ls-files -- {spec}/*`.split("\n")
17
- gem.extra_rdoc_files = %w[LICENSE README.rdoc]
17
+ gem.extra_rdoc_files = %w[LICENSE README.md]
18
18
  gem.require_paths = [ "lib" ]
19
19
 
20
20
  gem.add_runtime_dependency 'data_objects', '~> 0.10.6'
@@ -310,19 +310,39 @@ module DataMapper
310
310
  # Adapter below.
311
311
  module SQL #:nodoc:
312
312
  IDENTIFIER_MAX_LENGTH = 128
313
+ QUESTION_MARK = '?'.freeze
314
+ GT_OPERATOR = '>'.freeze
315
+ LT_OPERATOR = '<'.freeze
316
+ GTE_OPERATOR = '>='.freeze
317
+ LTE_OPERATOR = '<='.freeze
318
+ IS_OPERATOR = 'IS'.freeze
319
+ EQ_OPERATOR = '='.freeze
320
+ IN_OPERATOR = 'IN'.freeze
321
+ BETWEEN_OPERATOR = 'BETWEEN'.freeze
322
+ REGEXP_OPERATOR = '~'.freeze
323
+ LIKE_OPERATOR = 'LIKE'.freeze
324
+ NULL_KEYWORD = 'NULL'.freeze
325
+ AND_KEYWORD = ' AND '.freeze
326
+ ON_KEYWORD = 'ON'.freeze
327
+ COLUMN_SEPARATOR = ', '.freeze
328
+ SPACE = ' '.freeze
329
+ ONE_EQ_ZERO = '1 = 0'.freeze
330
+ SINGLE_QUOTE = /"/.freeze
331
+ DOUBLE_QUOTE = '""'.freeze
313
332
 
314
333
  # @api semipublic
315
334
  def property_to_column_name(property, qualify)
316
- column_name = ''
335
+ column_name = quote_name(property.field)
317
336
 
318
337
  case qualify
319
- when true
320
- column_name << "#{quote_name(property.model.storage_name(name))}."
321
- when String
322
- column_name << "#{quote_name(qualify)}."
338
+ when true
339
+ "#{quote_name(property.model.storage_name(name))}.#{column_name}"
340
+ when String
341
+ "#{quote_name(qualify)}.#{column_name}"
342
+ else
343
+ column_name
323
344
  end
324
345
 
325
- column_name << quote_name(property.field)
326
346
  end
327
347
 
328
348
  private
@@ -396,9 +416,9 @@ module DataMapper
396
416
  statement << default_values_clause
397
417
  else
398
418
  statement << DataMapper::Ext::String.compress_lines(<<-SQL)
399
- (#{properties.map { |property| quote_name(property.field) }.join(', ')})
419
+ (#{properties.map { |property| quote_name(property.field) }.join(COLUMN_SEPARATOR)})
400
420
  VALUES
401
- (#{(['?'] * properties.size).join(', ')})
421
+ (#{([QUESTION_MARK] * properties.size).join(COLUMN_SEPARATOR)})
402
422
  SQL
403
423
  end
404
424
 
@@ -438,7 +458,7 @@ module DataMapper
438
458
  end
439
459
 
440
460
  statement = "UPDATE #{quote_name(model.storage_name(name))}"
441
- statement << " SET #{properties.map { |property| "#{quote_name(property.field)} = ?" }.join(', ')}"
461
+ statement << " SET #{properties.map { |property| "#{quote_name(property.field)} = ?" }.join(COLUMN_SEPARATOR)}"
442
462
  statement << " WHERE #{conditions_statement}" unless DataMapper::Ext.blank?(conditions_statement)
443
463
 
444
464
  return statement, bind_values
@@ -473,7 +493,7 @@ module DataMapper
473
493
  #
474
494
  # @api private
475
495
  def columns_statement(properties, qualify)
476
- properties.map { |property| property_to_column_name(property, qualify) }.join(', ')
496
+ properties.map { |property| property_to_column_name(property, qualify) }.join(COLUMN_SEPARATOR)
477
497
  end
478
498
 
479
499
  # Constructs joins clause
@@ -504,7 +524,7 @@ module DataMapper
504
524
  seen[source_alias] = 0
505
525
  end
506
526
 
507
- statements << 'ON'
527
+ statements << ON_KEYWORD
508
528
 
509
529
  add_join_conditions(relationship, target_alias, source_alias, statements)
510
530
  add_extra_join_conditions(relationship, target_alias, statements, join_bind_values)
@@ -513,13 +533,13 @@ module DataMapper
513
533
  # prepend the join bind values to the statement bind values
514
534
  bind_values.unshift(*join_bind_values)
515
535
 
516
- statements.join(' ')
536
+ statements.join(SPACE)
517
537
  end
518
538
 
519
539
  def add_join_conditions(relationship, target_alias, source_alias, statements)
520
540
  statements << relationship.target_key.zip(relationship.source_key).map do |target_property, source_property|
521
541
  "#{property_to_column_name(target_property, target_alias)} = #{property_to_column_name(source_property, source_alias)}"
522
- end.join(' AND ')
542
+ end.join(AND_KEYWORD)
523
543
  end
524
544
 
525
545
  def add_extra_join_conditions(relationship, target_alias, statements, bind_values)
@@ -575,10 +595,10 @@ module DataMapper
575
595
  statement = if target_key.size == 1
576
596
  property_to_column_name(target_key.first, qualify)
577
597
  else
578
- "(#{target_key.map { |property| property_to_column_name(property, qualify) }.join(', ')})"
598
+ "(#{target_key.map { |property| property_to_column_name(property, qualify) }.join(COLUMN_SEPARATOR)})"
579
599
  end
580
600
 
581
- statement << " IN (#{select_statement})"
601
+ statement = "#{statement} IN (#{select_statement})"
582
602
 
583
603
  return statement, bind_values
584
604
  end
@@ -592,7 +612,7 @@ module DataMapper
592
612
  if conditions.valid?
593
613
  conditions_statement(conditions, qualify)
594
614
  else
595
- [ '1 = 0', [] ]
615
+ [ ONE_EQ_ZERO, [] ]
596
616
  end
597
617
  end
598
618
 
@@ -626,11 +646,11 @@ module DataMapper
626
646
  def order_statement(order, qualify)
627
647
  statements = order.map do |direction|
628
648
  statement = property_to_column_name(direction.target, qualify)
629
- statement << ' DESC' if direction.operator == :desc
649
+ statement = "#{statement} DESC" if direction.operator == :desc
630
650
  statement
631
651
  end
632
652
 
633
- statements.join(', ')
653
+ statements.join(COLUMN_SEPARATOR)
634
654
  end
635
655
 
636
656
  # @api private
@@ -699,10 +719,10 @@ module DataMapper
699
719
 
700
720
  # if operator return value contains ? then it means that it is function call
701
721
  # and it contains placeholder (%s) for property name as well (used in Oracle adapter for regexp operator)
702
- if operator.include?('?')
722
+ if operator.include?(QUESTION_MARK)
703
723
  return operator % column_name, [ value ]
704
724
  else
705
- return "#{column_name} #{operator} #{value.nil? ? 'NULL' : '?'}", [ value ].compact
725
+ return "#{column_name} #{operator} #{value.nil? ? NULL_KEYWORD : QUESTION_MARK}", [ value ].compact
706
726
  end
707
727
  end
708
728
 
@@ -715,39 +735,39 @@ module DataMapper
715
735
  when :in then include_operator(subject, value)
716
736
  when :regexp then regexp_operator(value)
717
737
  when :like then like_operator(value)
718
- when :gt then '>'
719
- when :lt then '<'
720
- when :gte then '>='
721
- when :lte then '<='
738
+ when :gt then GT_OPERATOR
739
+ when :lt then LT_OPERATOR
740
+ when :gte then GTE_OPERATOR
741
+ when :lte then LTE_OPERATOR
722
742
  end
723
743
  end
724
744
 
725
745
  # @api private
726
746
  def equality_operator(property, operand)
727
- operand.nil? ? 'IS' : '='
747
+ operand.nil? ? IS_OPERATOR : EQ_OPERATOR
728
748
  end
729
749
 
730
750
  # @api private
731
751
  def include_operator(property, operand)
732
752
  case operand
733
- when Array then 'IN'
734
- when Range then 'BETWEEN'
753
+ when Array then IN_OPERATOR
754
+ when Range then BETWEEN_OPERATOR
735
755
  end
736
756
  end
737
757
 
738
758
  # @api private
739
759
  def regexp_operator(operand)
740
- '~'
760
+ REGEXP_OPERATOR
741
761
  end
742
762
 
743
763
  # @api private
744
764
  def like_operator(operand)
745
- 'LIKE'
765
+ LIKE_OPERATOR
746
766
  end
747
767
 
748
768
  # @api private
749
769
  def quote_name(name)
750
- "\"#{name[0, self.class::IDENTIFIER_MAX_LENGTH].gsub('"', '""')}\""
770
+ "\"#{name[0, self.class::IDENTIFIER_MAX_LENGTH].gsub(SINGLE_QUOTE,DOUBLE_QUOTE)}\""
751
771
  end
752
772
 
753
773
  end
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
2
  module DoAdapter
3
- VERSION = '1.2.0'
3
+ VERSION = '1.2.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ardm-do-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Emde
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-30 00:00:00.000000000 Z
12
+ date: 2015-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: data_objects
@@ -75,12 +75,12 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files:
77
77
  - LICENSE
78
- - README.rdoc
78
+ - README.md
79
79
  files:
80
80
  - ".gitignore"
81
81
  - Gemfile
82
82
  - LICENSE
83
- - README.rdoc
83
+ - README.md
84
84
  - Rakefile
85
85
  - ardm-do-adapter.gemspec
86
86
  - lib/ardm-do-adapter.rb
@@ -1,3 +0,0 @@
1
- = dm-do-adapter
2
-
3
- A DataObjects Adapter for DataMapper