imparcial 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/imparcial/driver/{base → abstract}/expression/base.rb +11 -4
- data/lib/imparcial/driver/abstract/expression/column.rb +313 -0
- data/lib/imparcial/driver/abstract/expression/constraint.rb +149 -0
- data/lib/imparcial/driver/abstract/expression/delete.rb +88 -0
- data/lib/imparcial/driver/{base → abstract}/expression/index.rb +103 -96
- data/lib/imparcial/driver/abstract/expression/insert.rb +49 -0
- data/lib/imparcial/driver/{base → abstract}/expression/lock.rb +1 -1
- data/lib/imparcial/driver/{base/expression/util.rb → abstract/expression/record.rb} +8 -12
- data/lib/imparcial/driver/{base → abstract}/expression/select.rb +6 -4
- data/lib/imparcial/driver/{base → abstract}/expression/sequence.rb +133 -62
- data/lib/imparcial/driver/{base → abstract}/expression/statement.rb +1 -1
- data/lib/imparcial/driver/abstract/expression/table.rb +416 -0
- data/lib/imparcial/driver/abstract/expression/transaction.rb +143 -0
- data/lib/imparcial/driver/{base → abstract}/expression/update.rb +20 -3
- data/lib/imparcial/driver/abstract/expression.rb +24 -0
- data/lib/imparcial/driver/{base → abstract}/result.rb +12 -11
- data/lib/imparcial/driver/abstract/sql/column.rb +103 -0
- data/lib/imparcial/driver/abstract/sql/constraint.rb +42 -0
- data/lib/imparcial/driver/{base → abstract}/sql/delete.rb +1 -1
- data/lib/imparcial/driver/{base → abstract}/sql/index.rb +3 -11
- data/lib/imparcial/driver/{base → abstract}/sql/insert.rb +1 -1
- data/lib/imparcial/driver/abstract/sql/record.rb +19 -0
- data/lib/imparcial/driver/{base → abstract}/sql/select.rb +2 -2
- data/lib/imparcial/driver/{base → abstract}/sql/sequence.rb +2 -2
- data/lib/imparcial/driver/{base/sql/table_operation.rb → abstract/sql/table.rb} +8 -15
- data/lib/imparcial/driver/{base → abstract}/sql/transaction.rb +5 -5
- data/lib/imparcial/driver/{base → abstract}/sql/update.rb +1 -1
- data/lib/imparcial/driver/abstract/sql.rb +21 -0
- data/lib/imparcial/driver/{base → abstract}/typemap.rb +43 -89
- data/lib/imparcial/driver/{base → abstract}/util.rb +17 -5
- data/lib/imparcial/driver/abstract.rb +255 -0
- data/lib/imparcial/driver/mysql/expression/table.rb +2 -11
- data/lib/imparcial/driver/mysql/expression.rb +4 -4
- data/lib/imparcial/driver/mysql/result.rb +1 -1
- data/lib/imparcial/driver/mysql/sql/column.rb +59 -0
- data/lib/imparcial/driver/mysql/sql/constraint.rb +39 -0
- data/lib/imparcial/driver/mysql/sql/index.rb +14 -23
- data/lib/imparcial/driver/mysql/sql/sequence.rb +1 -1
- data/lib/imparcial/driver/mysql/sql/{table_metadata.rb → table.rb} +29 -5
- data/lib/imparcial/driver/mysql/sql.rb +7 -7
- data/lib/imparcial/driver/mysql/typemap.rb +1 -1
- data/lib/imparcial/driver/mysql/util.rb +1 -1
- data/lib/imparcial/driver/mysql.rb +19 -18
- data/lib/imparcial/driver/postgre/expression.rb +26 -7
- data/lib/imparcial/driver/postgre/result.rb +1 -1
- data/lib/imparcial/driver/postgre/sql/column.rb +53 -0
- data/lib/imparcial/driver/postgre/sql/constraint.rb +37 -0
- data/lib/imparcial/driver/postgre/sql/index.rb +21 -21
- data/lib/imparcial/driver/postgre/sql/sequence.rb +6 -4
- data/lib/imparcial/driver/postgre/sql/{table_metadata.rb → table.rb} +8 -8
- data/lib/imparcial/driver/postgre/sql.rb +7 -7
- data/lib/imparcial/driver/postgre/typemap.rb +2 -2
- data/lib/imparcial/driver/postgre/util.rb +1 -1
- data/lib/imparcial/driver/postgre.rb +11 -11
- data/lib/imparcial/driver.rb +1 -1
- data/lib/imparcial/exception.rb +28 -18
- data/lib/imparcial/initializer.rb +62 -0
- data/lib/imparcial.rb +1 -74
- metadata +50 -50
- data/lib/imparcial/driver/base/expression/delete.rb +0 -72
- data/lib/imparcial/driver/base/expression/insert.rb +0 -33
- data/lib/imparcial/driver/base/expression/table_diff.rb +0 -154
- data/lib/imparcial/driver/base/expression/table_evolution.rb +0 -94
- data/lib/imparcial/driver/base/expression/table_metadata.rb +0 -122
- data/lib/imparcial/driver/base/expression/table_operation.rb +0 -137
- data/lib/imparcial/driver/base/expression/transaction.rb +0 -59
- data/lib/imparcial/driver/base/expression.rb +0 -37
- data/lib/imparcial/driver/base/sql/table_metadata.rb +0 -29
- data/lib/imparcial/driver/base/sql.rb +0 -25
- data/lib/imparcial/driver/base.rb +0 -156
- data/lib/imparcial/driver/mysql/expression/index.rb +0 -44
- data/lib/imparcial/driver/mysql/sql/table_operation.rb +0 -20
- data/lib/imparcial/driver/postgre/expression/index.rb +0 -10
- data/lib/imparcial/driver/postgre/expression/sequence.rb +0 -9
- data/lib/imparcial/driver/postgre/expression/table.rb +0 -20
- data/lib/imparcial/driver/postgre/sql/table_operation.rb +0 -9
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4.3
|
|
3
3
|
specification_version: 1
|
4
4
|
name: imparcial
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.0.2
|
7
|
+
date: 2007-09-12 00:00:00 -03:00
|
8
8
|
summary: Standard Database Interface for ruby
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -30,74 +30,74 @@ authors:
|
|
30
30
|
- Guilherme Antoniolo Ferreira
|
31
31
|
files:
|
32
32
|
- lib/imparcial
|
33
|
-
- lib/imparcial.rb
|
34
33
|
- lib/imparcial/driver
|
35
|
-
- lib/imparcial/driver
|
36
|
-
- lib/imparcial/
|
37
|
-
- lib/imparcial/driver/
|
38
|
-
- lib/imparcial/driver/
|
34
|
+
- lib/imparcial/driver/abstract
|
35
|
+
- lib/imparcial/driver/abstract/expression
|
36
|
+
- lib/imparcial/driver/abstract/expression/select.rb
|
37
|
+
- lib/imparcial/driver/abstract/expression/record.rb
|
38
|
+
- lib/imparcial/driver/abstract/expression/base.rb
|
39
|
+
- lib/imparcial/driver/abstract/expression/table.rb
|
40
|
+
- lib/imparcial/driver/abstract/expression/transaction.rb
|
41
|
+
- lib/imparcial/driver/abstract/expression/constraint.rb
|
42
|
+
- lib/imparcial/driver/abstract/expression/delete.rb
|
43
|
+
- lib/imparcial/driver/abstract/expression/sequence.rb
|
44
|
+
- lib/imparcial/driver/abstract/expression/insert.rb
|
45
|
+
- lib/imparcial/driver/abstract/expression/index.rb
|
46
|
+
- lib/imparcial/driver/abstract/expression/column.rb
|
47
|
+
- lib/imparcial/driver/abstract/expression/lock.rb
|
48
|
+
- lib/imparcial/driver/abstract/expression/statement.rb
|
49
|
+
- lib/imparcial/driver/abstract/expression/update.rb
|
50
|
+
- lib/imparcial/driver/abstract/result.rb
|
51
|
+
- lib/imparcial/driver/abstract/typemap.rb
|
52
|
+
- lib/imparcial/driver/abstract/expression.rb
|
53
|
+
- lib/imparcial/driver/abstract/util.rb
|
54
|
+
- lib/imparcial/driver/abstract/sql
|
55
|
+
- lib/imparcial/driver/abstract/sql/select.rb
|
56
|
+
- lib/imparcial/driver/abstract/sql/record.rb
|
57
|
+
- lib/imparcial/driver/abstract/sql/table.rb
|
58
|
+
- lib/imparcial/driver/abstract/sql/transaction.rb
|
59
|
+
- lib/imparcial/driver/abstract/sql/constraint.rb
|
60
|
+
- lib/imparcial/driver/abstract/sql/delete.rb
|
61
|
+
- lib/imparcial/driver/abstract/sql/sequence.rb
|
62
|
+
- lib/imparcial/driver/abstract/sql/insert.rb
|
63
|
+
- lib/imparcial/driver/abstract/sql/index.rb
|
64
|
+
- lib/imparcial/driver/abstract/sql/column.rb
|
65
|
+
- lib/imparcial/driver/abstract/sql/update.rb
|
66
|
+
- lib/imparcial/driver/abstract/sql.rb
|
67
|
+
- lib/imparcial/driver/abstract.rb
|
39
68
|
- lib/imparcial/driver/postgre.rb
|
40
69
|
- lib/imparcial/driver/mysql.rb
|
41
70
|
- lib/imparcial/driver/mysql
|
42
|
-
- lib/imparcial/driver/postgre
|
43
|
-
- lib/imparcial/driver/base/expression
|
44
|
-
- lib/imparcial/driver/base/result.rb
|
45
|
-
- lib/imparcial/driver/base/typemap.rb
|
46
|
-
- lib/imparcial/driver/base/expression.rb
|
47
|
-
- lib/imparcial/driver/base/util.rb
|
48
|
-
- lib/imparcial/driver/base/sql
|
49
|
-
- lib/imparcial/driver/base/sql.rb
|
50
|
-
- lib/imparcial/driver/base/expression/select.rb
|
51
|
-
- lib/imparcial/driver/base/expression/base.rb
|
52
|
-
- lib/imparcial/driver/base/expression/table_diff.rb
|
53
|
-
- lib/imparcial/driver/base/expression/transaction.rb
|
54
|
-
- lib/imparcial/driver/base/expression/delete.rb
|
55
|
-
- lib/imparcial/driver/base/expression/sequence.rb
|
56
|
-
- lib/imparcial/driver/base/expression/insert.rb
|
57
|
-
- lib/imparcial/driver/base/expression/table_operation.rb
|
58
|
-
- lib/imparcial/driver/base/expression/index.rb
|
59
|
-
- lib/imparcial/driver/base/expression/lock.rb
|
60
|
-
- lib/imparcial/driver/base/expression/statement.rb
|
61
|
-
- lib/imparcial/driver/base/expression/util.rb
|
62
|
-
- lib/imparcial/driver/base/expression/table_metadata.rb
|
63
|
-
- lib/imparcial/driver/base/expression/update.rb
|
64
|
-
- lib/imparcial/driver/base/expression/table_evolution.rb
|
65
|
-
- lib/imparcial/driver/base/sql/select.rb
|
66
|
-
- lib/imparcial/driver/base/sql/transaction.rb
|
67
|
-
- lib/imparcial/driver/base/sql/delete.rb
|
68
|
-
- lib/imparcial/driver/base/sql/sequence.rb
|
69
|
-
- lib/imparcial/driver/base/sql/insert.rb
|
70
|
-
- lib/imparcial/driver/base/sql/table_operation.rb
|
71
|
-
- lib/imparcial/driver/base/sql/index.rb
|
72
|
-
- lib/imparcial/driver/base/sql/table_metadata.rb
|
73
|
-
- lib/imparcial/driver/base/sql/update.rb
|
74
71
|
- lib/imparcial/driver/mysql/expression
|
72
|
+
- lib/imparcial/driver/mysql/expression/table.rb
|
75
73
|
- lib/imparcial/driver/mysql/result.rb
|
76
74
|
- lib/imparcial/driver/mysql/typemap.rb
|
77
75
|
- lib/imparcial/driver/mysql/expression.rb
|
78
76
|
- lib/imparcial/driver/mysql/util.rb
|
79
77
|
- lib/imparcial/driver/mysql/sql
|
80
|
-
- lib/imparcial/driver/mysql/sql.rb
|
81
|
-
- lib/imparcial/driver/mysql/
|
82
|
-
- lib/imparcial/driver/mysql/expression/index.rb
|
78
|
+
- lib/imparcial/driver/mysql/sql/table.rb
|
79
|
+
- lib/imparcial/driver/mysql/sql/constraint.rb
|
83
80
|
- lib/imparcial/driver/mysql/sql/sequence.rb
|
84
|
-
- lib/imparcial/driver/mysql/sql/table_operation.rb
|
85
81
|
- lib/imparcial/driver/mysql/sql/index.rb
|
86
|
-
- lib/imparcial/driver/mysql/sql/
|
82
|
+
- lib/imparcial/driver/mysql/sql/column.rb
|
83
|
+
- lib/imparcial/driver/mysql/sql.rb
|
84
|
+
- lib/imparcial/driver/postgre
|
87
85
|
- lib/imparcial/driver/postgre/expression
|
88
86
|
- lib/imparcial/driver/postgre/result.rb
|
89
87
|
- lib/imparcial/driver/postgre/typemap.rb
|
90
88
|
- lib/imparcial/driver/postgre/expression.rb
|
91
89
|
- lib/imparcial/driver/postgre/util.rb
|
92
90
|
- lib/imparcial/driver/postgre/sql
|
93
|
-
- lib/imparcial/driver/postgre/sql.rb
|
94
|
-
- lib/imparcial/driver/postgre/
|
95
|
-
- lib/imparcial/driver/postgre/expression/sequence.rb
|
96
|
-
- lib/imparcial/driver/postgre/expression/index.rb
|
91
|
+
- lib/imparcial/driver/postgre/sql/table.rb
|
92
|
+
- lib/imparcial/driver/postgre/sql/constraint.rb
|
97
93
|
- lib/imparcial/driver/postgre/sql/sequence.rb
|
98
|
-
- lib/imparcial/driver/postgre/sql/table_operation.rb
|
99
94
|
- lib/imparcial/driver/postgre/sql/index.rb
|
100
|
-
- lib/imparcial/driver/postgre/sql/
|
95
|
+
- lib/imparcial/driver/postgre/sql/column.rb
|
96
|
+
- lib/imparcial/driver/postgre/sql.rb
|
97
|
+
- lib/imparcial/driver.rb
|
98
|
+
- lib/imparcial/initializer.rb
|
99
|
+
- lib/imparcial/exception.rb
|
100
|
+
- lib/imparcial.rb
|
101
101
|
test_files: []
|
102
102
|
|
103
103
|
rdoc_options: []
|
@@ -1,72 +0,0 @@
|
|
1
|
-
module Imparcial
|
2
|
-
module Driver
|
3
|
-
module ExpressionBase
|
4
|
-
module Delete
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
def expected_options_for_deleting
|
9
|
-
|
10
|
-
{:table_name => :required, :conditions => :required}
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def expected_options_for_deleting_all
|
15
|
-
|
16
|
-
{:table_name => :required}
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
public
|
21
|
-
|
22
|
-
# Delete some records. Except, this function only supports
|
23
|
-
# deleting with conditions. Otherwise an exception shall be
|
24
|
-
# raised.
|
25
|
-
|
26
|
-
def delete ( options = {} )
|
27
|
-
|
28
|
-
check_options expected_options_for_deleting, options
|
29
|
-
|
30
|
-
query sql_for_deleting( options )
|
31
|
-
|
32
|
-
rescue adapter_specific_exception => ex
|
33
|
-
|
34
|
-
raise DeleteError.new(ex.message)
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
# Delete all records. This function doesn't support conditions.
|
39
|
-
# If you provide one, an exception shall be raised.
|
40
|
-
|
41
|
-
def delete_all ( options = {} )
|
42
|
-
|
43
|
-
check_options expected_options_for_deleting_all, options
|
44
|
-
|
45
|
-
query sql_for_deleting( options )
|
46
|
-
|
47
|
-
rescue adapter_specific_exception => ex
|
48
|
-
|
49
|
-
raise DeleteError.new(ex.message)
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
# Delete records without raising any exception.
|
54
|
-
|
55
|
-
def delete_if_necessary ( options = {} )
|
56
|
-
|
57
|
-
delete options
|
58
|
-
|
59
|
-
rescue DeleteError; end
|
60
|
-
|
61
|
-
# Delete all records without raising any exception.
|
62
|
-
|
63
|
-
def delete_all_if_necessary ( options = {} )
|
64
|
-
|
65
|
-
delete_all options
|
66
|
-
|
67
|
-
rescue DeleteError; end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Imparcial
|
2
|
-
module Driver
|
3
|
-
module ExpressionBase
|
4
|
-
module Insert
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
def expected_options_for_inserting
|
9
|
-
|
10
|
-
{:table_name => :required, :values => :required}
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
public
|
15
|
-
|
16
|
-
# Insert records in a table. Values are must.
|
17
|
-
|
18
|
-
def insert ( options = {} )
|
19
|
-
|
20
|
-
check_options expected_options_for_inserting, options
|
21
|
-
|
22
|
-
query sql_for_inserting( options )
|
23
|
-
|
24
|
-
rescue adapter_specific_exception => ex
|
25
|
-
|
26
|
-
raise InsertError.new(ex.message)
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,154 +0,0 @@
|
|
1
|
-
module Imparcial
|
2
|
-
module Driver
|
3
|
-
module ExpressionBase
|
4
|
-
module TableDiff
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
def expected_options_for_reporting
|
9
|
-
|
10
|
-
{:table_name => :required, :fields => :required}
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
public
|
15
|
-
|
16
|
-
def diff_columns ( options = {} )
|
17
|
-
|
18
|
-
modified = report_modified_columns options
|
19
|
-
new = report_new_columns options
|
20
|
-
old = report_old_columns options
|
21
|
-
|
22
|
-
[modified, new, old]
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
# Execute a diff by comparing existent fields.
|
27
|
-
# If you eventually try to insert a non-existent field,
|
28
|
-
# an exception shall be raised.
|
29
|
-
|
30
|
-
def report_modified_columns ( options = {} )
|
31
|
-
|
32
|
-
check_options expected_options_for_reporting, options
|
33
|
-
|
34
|
-
modified_fields = options[:fields]
|
35
|
-
|
36
|
-
modified_columns = []
|
37
|
-
current_fields = retrieve_columns :table_name => options[:table_name]
|
38
|
-
|
39
|
-
parse_fields modified_fields do |modified_field|
|
40
|
-
|
41
|
-
current_fields.each do |current_field|
|
42
|
-
|
43
|
-
if modified_field[:name] == current_field[:name]
|
44
|
-
|
45
|
-
# We gotta check every attribute to see if a modification can occur.
|
46
|
-
|
47
|
-
if modified_field[:type] != current_field[:type] || modified_field[:default_value] != current_field[:default_value]\
|
48
|
-
|| modified_field[:allow_null] != current_field[:allow_null] || modified_field[:pk] != current_field[:pk]\
|
49
|
-
|| modified_field[:sequence] != current_field[:sequenec] || modified_field[:size] != current_field[:size]
|
50
|
-
|
51
|
-
modified_columns << current_field
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
end #end of parse_fields
|
60
|
-
|
61
|
-
modified_columns
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
# Execute a diff by comparing new fields.
|
66
|
-
# If you eventually try to insert an existent field,
|
67
|
-
# an exception shall be raised.
|
68
|
-
|
69
|
-
def report_new_columns ( options = {} )
|
70
|
-
|
71
|
-
check_options expected_options_for_reporting, options
|
72
|
-
|
73
|
-
new_fields = options[:fields]
|
74
|
-
|
75
|
-
new_columns = []
|
76
|
-
no_new_field = false
|
77
|
-
|
78
|
-
current_fields = retrieve_columns :table_name => options[:table_name]
|
79
|
-
|
80
|
-
parse_fields new_fields do |new_field|
|
81
|
-
|
82
|
-
current_fields.each do |current_field|
|
83
|
-
|
84
|
-
if new_field[:name] == current_field[:name]
|
85
|
-
|
86
|
-
no_new_field = true
|
87
|
-
break
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
if no_new_field
|
94
|
-
|
95
|
-
no_new_field = false
|
96
|
-
next
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
new_columns << new_field
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
new_columns
|
105
|
-
|
106
|
-
end
|
107
|
-
|
108
|
-
# Execute a diff by comparing new fields with current ones.
|
109
|
-
# Legacy fields will be showed.
|
110
|
-
# Shall be raised an exception if trying to compare modifying fields.
|
111
|
-
|
112
|
-
def report_old_columns ( options )
|
113
|
-
|
114
|
-
check_options expected_options_for_reporting, options
|
115
|
-
|
116
|
-
new_fields = options[:fields]
|
117
|
-
|
118
|
-
legacy_fields = []
|
119
|
-
no_old_field = false
|
120
|
-
|
121
|
-
current_fields = retrieve_columns :table_name => options[:table_name]
|
122
|
-
|
123
|
-
current_fields.each do |current_field|
|
124
|
-
|
125
|
-
parse_fields new_fields do |new_field|
|
126
|
-
|
127
|
-
if new_field[:name] == current_field[:name]
|
128
|
-
|
129
|
-
no_old_field = true
|
130
|
-
break
|
131
|
-
|
132
|
-
end
|
133
|
-
|
134
|
-
if no_old_field == true
|
135
|
-
|
136
|
-
no_old_field = false
|
137
|
-
next
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
legacy_fields << current_field
|
142
|
-
|
143
|
-
end #end of parse_fields
|
144
|
-
|
145
|
-
end
|
146
|
-
|
147
|
-
legacy_fields
|
148
|
-
|
149
|
-
end
|
150
|
-
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
@@ -1,94 +0,0 @@
|
|
1
|
-
module Imparcial
|
2
|
-
module Driver
|
3
|
-
module ExpressionBase
|
4
|
-
module TableEvolution
|
5
|
-
|
6
|
-
=begin
|
7
|
-
# Execute the alter table statement by only insert new fields.
|
8
|
-
# An exception shall be raised if trying to insert modified fields.
|
9
|
-
|
10
|
-
def add_columns ( table_name, fields )
|
11
|
-
|
12
|
-
# Let's see if it's necessary to alter a table.
|
13
|
-
|
14
|
-
affected_columns = report_new_columns table_name, fields, true
|
15
|
-
|
16
|
-
syntax = ''
|
17
|
-
|
18
|
-
if affected_columns.length > 0
|
19
|
-
|
20
|
-
syntax += 'ALTER TABLE ' + quote_table(table_name) + ' ADD COLUMN'
|
21
|
-
syntax += '('
|
22
|
-
|
23
|
-
fields_to_columns affected_columns do |column|
|
24
|
-
|
25
|
-
syntax += column + ','
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
syntax.chop!
|
30
|
-
|
31
|
-
syntax += ')'
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
query syntax
|
36
|
-
|
37
|
-
syntax
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
def drop_columns ( table_name, fields_by_name )
|
42
|
-
|
43
|
-
syntax = ''
|
44
|
-
|
45
|
-
if fields_by_name.length > 0
|
46
|
-
|
47
|
-
syntax += 'ALTER TABLE ' + quote_table(table_name)
|
48
|
-
|
49
|
-
fields_by_name.each do |name|
|
50
|
-
|
51
|
-
syntax += ' DROP COLUMN ' + quote_column(name) + ','
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
syntax.chop!
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
begin
|
60
|
-
|
61
|
-
query syntax
|
62
|
-
|
63
|
-
rescue Object => ex
|
64
|
-
|
65
|
-
raise TableError.new(ex.message)
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
syntax
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
def modify_columns ( table_name, fields )
|
74
|
-
|
75
|
-
syntax = 'ALTER TABLE ' + quote_table(table_name) + ' '
|
76
|
-
|
77
|
-
fields_to_columns fields do |column|
|
78
|
-
|
79
|
-
syntax += 'MODIFY COLUMN ' + column + ','
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
syntax.chop!
|
84
|
-
|
85
|
-
query syntax
|
86
|
-
|
87
|
-
syntax
|
88
|
-
|
89
|
-
end
|
90
|
-
=end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
@@ -1,122 +0,0 @@
|
|
1
|
-
module Imparcial
|
2
|
-
module Driver
|
3
|
-
module ExpressionBase
|
4
|
-
module TableMetadata
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
def expected_options_for_retrieving_columns
|
9
|
-
|
10
|
-
{:table_name => :required}
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def expected_options_for_verifying_existence
|
15
|
-
|
16
|
-
{:table_name => :required}
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
###########################################
|
21
|
-
# #
|
22
|
-
# Couple of Table features #
|
23
|
-
# #
|
24
|
-
###########################################
|
25
|
-
|
26
|
-
public
|
27
|
-
|
28
|
-
# Return all avaliable tables by name in a specific database
|
29
|
-
# Return is a array of names.
|
30
|
-
|
31
|
-
def retrieve_tables
|
32
|
-
|
33
|
-
query sql_for_retrieving_tables
|
34
|
-
|
35
|
-
tables = []
|
36
|
-
|
37
|
-
result.fetch do |table_name_column|
|
38
|
-
|
39
|
-
tables << table_name_column.value
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
tables
|
44
|
-
|
45
|
-
rescue adapter_specific_exception => ex
|
46
|
-
|
47
|
-
raise TableRetrieveError.new(ex.message)
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
# Check if a table exists, returning true or false.
|
52
|
-
|
53
|
-
def table_exists? ( options = {} )
|
54
|
-
|
55
|
-
check_options expected_options_for_verifying_existence, options
|
56
|
-
|
57
|
-
tables = retrieve_tables
|
58
|
-
|
59
|
-
tables.each do |name|
|
60
|
-
|
61
|
-
return true if name == options[:table_name]
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
return false
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
# The opposite of above.
|
70
|
-
|
71
|
-
def table_not_exists? ( options = {} )
|
72
|
-
|
73
|
-
not table_exists? options
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
public
|
78
|
-
|
79
|
-
# Return metadata about columns from a specific table.
|
80
|
-
# It Requires a table name as parameter.
|
81
|
-
# If there's no table, it will raise an error.
|
82
|
-
|
83
|
-
def retrieve_columns ( options = {} )
|
84
|
-
|
85
|
-
check_options expected_options_for_retrieving_columns, options
|
86
|
-
|
87
|
-
query sql_for_retrieving_columns( options )
|
88
|
-
|
89
|
-
columns = []
|
90
|
-
|
91
|
-
result.fetch do |name, type, size, allow_null, pk, default_value, auto_inc, indexed|
|
92
|
-
|
93
|
-
column = {}
|
94
|
-
column[:name] = name.value
|
95
|
-
column[:type] = type.value
|
96
|
-
column[:size] = size.value
|
97
|
-
column[:allow_null] = allow_null.value
|
98
|
-
column[:pk] = pk.value
|
99
|
-
column[:default_value] = default_value.value
|
100
|
-
column[:auto_increment] = auto_inc.value
|
101
|
-
column[:indexed] = indexed.value
|
102
|
-
|
103
|
-
# Transform SQL columns into RDBAL's ones.
|
104
|
-
|
105
|
-
parse_column column
|
106
|
-
|
107
|
-
columns << column
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
columns
|
112
|
-
|
113
|
-
rescue adapter_specific_exception => ex
|
114
|
-
|
115
|
-
raise TableRetrieveError.new(ex.message)
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|