port-a-query 0.1.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.
@@ -0,0 +1,4 @@
1
+ require 'port-a-query/port-a-query'
2
+ require 'port-a-query/default'
3
+ require 'port-a-query/sqlite3'
4
+ require 'port-a-query/mysql'
@@ -0,0 +1,23 @@
1
+ module PortAQuery
2
+
3
+ class Default
4
+
5
+ def self.concat(*args)
6
+ args.map! do |arg|
7
+ arg.is_a?(Symbol) ? PortAQuery.quote_identifier(arg) : PortAQuery.quote_string(arg)
8
+ end
9
+ return args.join('||')
10
+ end
11
+
12
+ def self.quote_string(str)
13
+ str.gsub!("'", "\\\\'")
14
+ return "'#{str}'"
15
+ end
16
+
17
+ def self.quote_identifier(ident)
18
+ return '"'+ident.to_s+'"'
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,18 @@
1
+ module PortAQuery
2
+
3
+ class MySql
4
+
5
+ def self.concat(*args)
6
+ args.map! do |arg|
7
+ arg.is_a?(Symbol) ? PortAQuery.quote_identifier(arg) : PortAQuery.quote_string(arg)
8
+ end
9
+ return "CONCAT(#{args.join(',')})"
10
+ end
11
+
12
+ def self.quote_identifier(ident)
13
+ return "`#{ident}`"
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,34 @@
1
+ module PortAQuery
2
+
3
+ # Symbols should be used for field names, everything else will be quoted as a string
4
+
5
+ def self.method_missing(name, *args)
6
+
7
+ adapter_class = self.adapter_class
8
+
9
+ if adapter_class.respond_to?(name)
10
+ adapter_class.send(name, *args)
11
+ else
12
+ Default.send(name, *args)
13
+ end
14
+
15
+ end
16
+
17
+ protected
18
+
19
+ def self.adapter
20
+ ActiveRecord::Base.configurations[RAILS_ENV]['adapter']
21
+ end
22
+
23
+ def self.adapter_class
24
+
25
+ case self.adapter.to_sym
26
+ when :sqlite3
27
+ return SqLite3
28
+ when :mysql
29
+ return MySql
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,12 @@
1
+ module PortAQuery
2
+
3
+ class SqLite3
4
+
5
+ def self.quote_string(str)
6
+ str.gsub!("'", "''")
7
+ return "'#{str}'"
8
+ end
9
+
10
+ end
11
+
12
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: port-a-query
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Adam Crownoble
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-03 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Simple helper for generating portable SQL expressions.
23
+ email: adam@obledesign.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/port-a-query/default.rb
32
+ - lib/port-a-query/mysql.rb
33
+ - lib/port-a-query/port-a-query.rb
34
+ - lib/port-a-query/sqlite3.rb
35
+ - lib/port-a-query.rb
36
+ has_rdoc: true
37
+ homepage: http://obledesign.com
38
+ licenses: []
39
+
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ hash: 3
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ requirements: []
64
+
65
+ rubyforge_project:
66
+ rubygems_version: 1.3.7
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: SQL query portability helpers
70
+ test_files: []
71
+