empty_eye 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,22 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class AbstractMysqlAdapter < AbstractAdapter
4
+
5
+ def tables_without_views(name = nil, database = nil, like = nil) #:nodoc:
6
+ sql = "SHOW FULL TABLES WHERE table_type = 'BASE TABLE'"
7
+
8
+ execute_and_free(sql, 'SCHEMA') do |result|
9
+ result.collect { |field| field.first }
10
+ end
11
+ end
12
+
13
+ def views(name = nil, database = nil, like = nil) #:nodoc:
14
+ sql = "SHOW FULL TABLES WHERE table_type = 'VIEW'"
15
+
16
+ execute_and_free(sql, 'SCHEMA') do |result|
17
+ result.collect { |field| field.first }
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class OciAdapter < AbstractAdapter
4
+
5
+ def tables(name = nil) #:nodoc:
6
+ tables_without_views(name) | views(name)
7
+ end
8
+
9
+ def tables_without_views(name = nil) #:nodoc:
10
+ tables = []
11
+ execute("SELECT TABLE_NAME FROM USER_TABLES", name).each { |row| tables << row[0] }
12
+ tables
13
+ end
14
+
15
+ def views(name = nil) #:nodoc:
16
+ views = []
17
+ execute("SELECT VIEW_NAME FROM USER_VIEWS", name).each { |row| views << row[0] }
18
+ views
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class OracleAdapter < AbstractAdapter
4
+
5
+ def tables(name = nil) #:nodoc:
6
+ tables = []
7
+ execute("SELECT TABLE_NAME FROM USER_TABLES", name).each { |row| tables << row[0] }
8
+ views = []
9
+ execute("SELECT VIEW_NAME FROM USER_VIEWS", name).each { |row| views << row[0] }
10
+ tables | views
11
+ end
12
+
13
+ def tables_without_views(name = nil) #:nodoc:
14
+ tables = []
15
+ execute("SELECT TABLE_NAME FROM USER_TABLES", name).each { |row| tables << row[0] }
16
+ tables
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class OracleEnhancedAdapter < AbstractAdapter
4
+
5
+ def tables_without_views(name = nil) #:nodoc:
6
+ tables = []
7
+ cursor = execute("SELECT TABLE_NAME FROM USER_TABLES", name)
8
+ while row = cursor.fetch
9
+ tables << row[0]
10
+ end
11
+ tables
12
+ end
13
+
14
+ def tables(name = nil) #:nodoc:
15
+ tables = tables_without_views(name)
16
+ views = views(name)
17
+ tables | views
18
+ end
19
+
20
+ def views(name = nil) #:nodoc:
21
+ views = []
22
+ cursor = execute("SELECT VIEW_NAME FROM USER_VIEWS", name)
23
+ while row = cursor.fetch
24
+ views << row[0]
25
+ end
26
+ views
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class PostgreSQLAdapter < AbstractAdapter
4
+
5
+ def tables(name = nil)
6
+ tables_without_views(name) | views(name)
7
+ end
8
+
9
+ def tables_without_views(name = nil)
10
+ query(<<-SQL, 'SCHEMA').map { |row| row[0] }
11
+ SELECT tablename
12
+ FROM pg_tables
13
+ WHERE schemaname = ANY (current_schemas(false))
14
+ SQL
15
+ end
16
+
17
+ def views(name = nil)
18
+ query(<<-SQL, 'SCHEMA').map { |row| row[0] }
19
+ SELECT tablename
20
+ FROM pg_views
21
+ WHERE schemaname = ANY (current_schemas(false))
22
+ SQL
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,45 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class SQLiteAdapter < AbstractAdapter
4
+
5
+ def tables(name = 'SCHEMA', table_name = nil) #:nodoc:
6
+ sql = <<-SQL
7
+ SELECT name
8
+ FROM sqlite_master
9
+ WHERE (type = 'table' OR type = 'view') AND NOT name = 'sqlite_sequence'
10
+ SQL
11
+ sql << " AND name = #{quote_table_name(table_name)}" if table_name
12
+
13
+ exec_query(sql, name).map do |row|
14
+ row['name']
15
+ end
16
+ end
17
+
18
+ def tables_without_views(name = 'SCHEMA', table_name = nil) #:nodoc:
19
+ sql = <<-SQL
20
+ SELECT name
21
+ FROM sqlite_master
22
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
23
+ SQL
24
+ sql << " AND name = #{quote_table_name(table_name)}" if table_name
25
+
26
+ exec_query(sql, name).map do |row|
27
+ row['name']
28
+ end
29
+ end
30
+
31
+ def views(name = 'SCHEMA', table_name = nil) #:nodoc:
32
+ sql = <<-SQL
33
+ SELECT name
34
+ FROM sqlite_master
35
+ WHERE type = 'view' AND NOT name = 'sqlite_sequence'
36
+ SQL
37
+ sql << " AND name = #{quote_table_name(table_name)}" if table_name
38
+
39
+ exec_query(sql, name).map do |row|
40
+ row['name']
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ class SQLServerAdapter < AbstractAdapter
4
+
5
+ # Get all of the non-view tables from the currently connected schema
6
+ def tables_without_views(name = nil)
7
+ # this is untested
8
+ select_values("SELECT table_name FROM information_schema.tables", name)
9
+ end
10
+
11
+ # Returns all the view names from the currently connected schema.
12
+ def views(name = nil)
13
+ select_values("SELECT table_name FROM information_schema.views", name)
14
+ end
15
+
16
+ def tables(name = nil)
17
+ tables_without_views(name) | views(name)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -2,7 +2,7 @@ module EmptyEye
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 4
5
- TINY = 3
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/empty_eye.rb CHANGED
@@ -18,7 +18,13 @@ require "empty_eye/shard_association_reflection"
18
18
 
19
19
  require "empty_eye/active_record/base"
20
20
  require "empty_eye/active_record/schema_dumper"
21
- require "empty_eye/active_record/connection_adapter"
21
+ require "empty_eye/active_record/connection_adapters/abstract_mysql_adapter"
22
+ require "empty_eye/active_record/connection_adapters/postgresql_adapter"
23
+ require "empty_eye/active_record/connection_adapters/oci_adapter"
24
+ require "empty_eye/active_record/connection_adapters/oracle_adapter"
25
+ require "empty_eye/active_record/connection_adapters/oracleenhanced_adapter"
26
+ require "empty_eye/active_record/connection_adapters/sqlserver_adapter"
27
+ require "empty_eye/active_record/connection_adapters/sqlite_adapter"
22
28
 
23
29
  module EmptyEye
24
30
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: empty_eye
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 3
10
- version: 0.4.3
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - thegboat
@@ -97,7 +97,13 @@ files:
97
97
  - empty_eye.gemspec
98
98
  - lib/empty_eye.rb
99
99
  - lib/empty_eye/active_record/base.rb
100
- - lib/empty_eye/active_record/connection_adapter.rb
100
+ - lib/empty_eye/active_record/connection_adapters/abstract_mysql_adapter.rb
101
+ - lib/empty_eye/active_record/connection_adapters/oci_adapter.rb
102
+ - lib/empty_eye/active_record/connection_adapters/oracle_adapter.rb
103
+ - lib/empty_eye/active_record/connection_adapters/oracleenhanced_adapter.rb
104
+ - lib/empty_eye/active_record/connection_adapters/postgresql_adapter.rb
105
+ - lib/empty_eye/active_record/connection_adapters/sqlite_adapter.rb
106
+ - lib/empty_eye/active_record/connection_adapters/sqlserver_adapter.rb
101
107
  - lib/empty_eye/active_record/schema_dumper.rb
102
108
  - lib/empty_eye/associations/builder/shard_has_one.rb
103
109
  - lib/empty_eye/associations/shard_association_scope.rb
@@ -1,46 +0,0 @@
1
- module ActiveRecord
2
- module ConnectionAdapters
3
- class AbstractAdapter
4
- #we need this logic to correctly build schema file
5
- def tables_without_views
6
- #trying to make compatible with rails 2.3.x; failing
7
- if respond_to?('execute_and_free')
8
- execute_and_free(tables_without_views_sql) do |result|
9
- result.collect { |field| field.first }
10
- end
11
- else
12
- result = execute(tables_without_views_sql)
13
- rtn = result.collect { |field| field.first }
14
- result.free rescue nil
15
- rtn
16
- end
17
- end
18
-
19
- private
20
-
21
- #i coulda made this more OO but this seemed to handle more unknown speed bumps
22
- #perusing rails_sql_views helped a bit
23
- # https://github.com/aeden/rails_sql_views
24
- def tables_without_views_sql
25
- case self.to_s
26
- when /^mysql/i
27
- "SHOW FULL TABLES WHERE table_type = 'BASE TABLE'"
28
- when /postgresql/i
29
- %{SELECT tablename
30
- FROM pg_tables
31
- WHERE schemaname = ANY (current_schemas(false)) AND table_type = 'BASE TABLE'}
32
- when /sqlite/i
33
- %{SELECT name
34
- FROM sqlite_master
35
- WHERE type = 'table' AND NOT name = 'sqlite_sequence'}
36
- when /oracle/i
37
- "SELECT TABLE_NAME FROM USER_TABLES"
38
- when /sqlserver/i
39
- "SELECT table_name FROM information_schema.tables"
40
- else
41
- "SHOW FULL TABLES WHERE table_type = 'BASE TABLE'"
42
- end
43
- end
44
- end
45
- end
46
- end