imparcial 0.0.4 → 0.0.5

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.
Files changed (80) hide show
  1. data/History.txt +2 -5
  2. data/Manifest.txt +79 -5
  3. data/README.txt +71 -7
  4. data/Rakefile +1 -1
  5. data/lib/imparcial/driver/abstract/expression/column.rb +313 -0
  6. data/lib/imparcial/driver/abstract/expression/constraint.rb +149 -0
  7. data/lib/imparcial/driver/abstract/expression/delete.rb +88 -0
  8. data/lib/imparcial/driver/abstract/expression/index.rb +206 -0
  9. data/lib/imparcial/driver/abstract/expression/insert.rb +49 -0
  10. data/lib/imparcial/driver/abstract/expression/lock.rb +11 -0
  11. data/lib/imparcial/driver/abstract/expression/record.rb +41 -0
  12. data/lib/imparcial/driver/abstract/expression/select.rb +38 -0
  13. data/lib/imparcial/driver/abstract/expression/sequence.rb +260 -0
  14. data/lib/imparcial/driver/abstract/expression/statement.rb +128 -0
  15. data/lib/imparcial/driver/abstract/expression/table.rb +416 -0
  16. data/lib/imparcial/driver/abstract/expression/transaction.rb +143 -0
  17. data/lib/imparcial/driver/abstract/expression/update.rb +50 -0
  18. data/lib/imparcial/driver/abstract/expression.rb +23 -0
  19. data/lib/imparcial/driver/abstract/result.rb +95 -0
  20. data/lib/imparcial/driver/abstract/sql/column.rb +103 -0
  21. data/lib/imparcial/driver/abstract/sql/constraint.rb +42 -0
  22. data/lib/imparcial/driver/abstract/sql/delete.rb +22 -0
  23. data/lib/imparcial/driver/abstract/sql/index.rb +45 -0
  24. data/lib/imparcial/driver/abstract/sql/insert.rb +63 -0
  25. data/lib/imparcial/driver/abstract/sql/record.rb +19 -0
  26. data/lib/imparcial/driver/abstract/sql/select.rb +101 -0
  27. data/lib/imparcial/driver/abstract/sql/sequence.rb +55 -0
  28. data/lib/imparcial/driver/abstract/sql/table.rb +42 -0
  29. data/lib/imparcial/driver/abstract/sql/transaction.rb +43 -0
  30. data/lib/imparcial/driver/abstract/sql/update.rb +29 -0
  31. data/lib/imparcial/driver/abstract/sql.rb +21 -0
  32. data/lib/imparcial/driver/abstract/typemap.rb +168 -0
  33. data/lib/imparcial/driver/abstract/util.rb +53 -0
  34. data/lib/imparcial/driver/abstract.rb +255 -0
  35. data/lib/imparcial/driver/mysql/expression/table.rb +17 -0
  36. data/lib/imparcial/driver/mysql/expression.rb +11 -0
  37. data/lib/imparcial/driver/mysql/result.rb +33 -0
  38. data/lib/imparcial/driver/mysql/sql/column.rb +59 -0
  39. data/lib/imparcial/driver/mysql/sql/constraint.rb +39 -0
  40. data/lib/imparcial/driver/mysql/sql/index.rb +42 -0
  41. data/lib/imparcial/driver/mysql/sql/sequence.rb +39 -0
  42. data/lib/imparcial/driver/mysql/sql/table.rb +67 -0
  43. data/lib/imparcial/driver/mysql/sql.rb +15 -0
  44. data/lib/imparcial/driver/mysql/typemap.rb +13 -0
  45. data/lib/imparcial/driver/mysql/util.rb +13 -0
  46. data/lib/imparcial/driver/mysql.rb +49 -0
  47. data/lib/imparcial/driver/postgre/expression.rb +32 -0
  48. data/lib/imparcial/driver/postgre/result.rb +35 -0
  49. data/lib/imparcial/driver/postgre/sql/column.rb +53 -0
  50. data/lib/imparcial/driver/postgre/sql/constraint.rb +37 -0
  51. data/lib/imparcial/driver/postgre/sql/index.rb +53 -0
  52. data/lib/imparcial/driver/postgre/sql/sequence.rb +30 -0
  53. data/lib/imparcial/driver/postgre/sql/table.rb +46 -0
  54. data/lib/imparcial/driver/postgre/sql.rb +15 -0
  55. data/lib/imparcial/driver/postgre/typemap.rb +36 -0
  56. data/lib/imparcial/driver/postgre/util.rb +19 -0
  57. data/lib/imparcial/driver/postgre.rb +43 -0
  58. data/lib/imparcial/driver.rb +1 -0
  59. data/lib/imparcial/exception.rb +71 -0
  60. data/lib/imparcial/extension.rb +90 -0
  61. data/lib/imparcial/initializer.rb +30 -0
  62. data/lib/imparcial.rb +1 -1
  63. data/test/unit/base/common/tc_quote.rb +30 -0
  64. data/test/unit/base/expression/tc_column.rb +84 -0
  65. data/test/unit/base/expression/tc_constraint.rb +39 -0
  66. data/test/unit/base/expression/tc_delete.rb +51 -0
  67. data/test/unit/base/expression/tc_index.rb +43 -0
  68. data/test/unit/base/expression/tc_insert.rb +44 -0
  69. data/test/unit/base/expression/tc_select.rb +142 -0
  70. data/test/unit/base/expression/tc_sequence.rb +48 -0
  71. data/test/unit/base/expression/tc_table.rb +68 -0
  72. data/test/unit/base/expression/tc_table_diff.rb +41 -0
  73. data/test/unit/base/expression/tc_transaction.rb +46 -0
  74. data/test/unit/base/expression/tc_update.rb +29 -0
  75. data/test/unit/base/statement/tc_conditions.rb +84 -0
  76. data/test/unit/base/statement/tc_limit.rb +25 -0
  77. data/test/unit/base/statement/tc_order.rb +25 -0
  78. data/test/unit/helper.rb +64 -0
  79. data/test/unit/mysql/tc_sequence.rb +41 -0
  80. metadata +102 -10
data/History.txt CHANGED
@@ -1,5 +1,2 @@
1
- == 0.0.3 / 2007-09-16
2
-
3
- * 1 major enhancement
4
- * Birthday!
5
-
1
+ Tue Sep 18 02:48:45 BRT 2007 antoniolo@gmail.com
2
+ * initial import
data/Manifest.txt CHANGED
@@ -1,5 +1,79 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- lib/imparcial.rb
1
+ ./Manifest.txt
2
+ ./Rakefile
3
+ ./History.txt
4
+ ./test/unit/base/expression/tc_select.rb
5
+ ./test/unit/base/expression/tc_table_diff.rb
6
+ ./test/unit/base/expression/tc_constraint.rb
7
+ ./test/unit/base/expression/tc_transaction.rb
8
+ ./test/unit/base/expression/tc_update.rb
9
+ ./test/unit/base/expression/tc_sequence.rb
10
+ ./test/unit/base/expression/tc_column.rb
11
+ ./test/unit/base/expression/tc_index.rb
12
+ ./test/unit/base/expression/tc_insert.rb
13
+ ./test/unit/base/expression/tc_table.rb
14
+ ./test/unit/base/expression/tc_delete.rb
15
+ ./test/unit/base/common/tc_quote.rb
16
+ ./test/unit/base/statement/tc_limit.rb
17
+ ./test/unit/base/statement/tc_conditions.rb
18
+ ./test/unit/base/statement/tc_order.rb
19
+ ./test/unit/helper.rb
20
+ ./test/unit/mysql/tc_sequence.rb
21
+ ./lib/imparcial/extension.rb
22
+ ./lib/imparcial/driver/abstract/expression/select.rb
23
+ ./lib/imparcial/driver/abstract/expression/record.rb
24
+ ./lib/imparcial/driver/abstract/expression/table.rb
25
+ ./lib/imparcial/driver/abstract/expression/transaction.rb
26
+ ./lib/imparcial/driver/abstract/expression/constraint.rb
27
+ ./lib/imparcial/driver/abstract/expression/delete.rb
28
+ ./lib/imparcial/driver/abstract/expression/sequence.rb
29
+ ./lib/imparcial/driver/abstract/expression/insert.rb
30
+ ./lib/imparcial/driver/abstract/expression/index.rb
31
+ ./lib/imparcial/driver/abstract/expression/column.rb
32
+ ./lib/imparcial/driver/abstract/expression/lock.rb
33
+ ./lib/imparcial/driver/abstract/expression/statement.rb
34
+ ./lib/imparcial/driver/abstract/expression/update.rb
35
+ ./lib/imparcial/driver/abstract/result.rb
36
+ ./lib/imparcial/driver/abstract/typemap.rb
37
+ ./lib/imparcial/driver/abstract/expression.rb
38
+ ./lib/imparcial/driver/abstract/util.rb
39
+ ./lib/imparcial/driver/abstract/sql/select.rb
40
+ ./lib/imparcial/driver/abstract/sql/record.rb
41
+ ./lib/imparcial/driver/abstract/sql/table.rb
42
+ ./lib/imparcial/driver/abstract/sql/transaction.rb
43
+ ./lib/imparcial/driver/abstract/sql/constraint.rb
44
+ ./lib/imparcial/driver/abstract/sql/delete.rb
45
+ ./lib/imparcial/driver/abstract/sql/sequence.rb
46
+ ./lib/imparcial/driver/abstract/sql/insert.rb
47
+ ./lib/imparcial/driver/abstract/sql/index.rb
48
+ ./lib/imparcial/driver/abstract/sql/column.rb
49
+ ./lib/imparcial/driver/abstract/sql/update.rb
50
+ ./lib/imparcial/driver/abstract/sql.rb
51
+ ./lib/imparcial/driver/abstract.rb
52
+ ./lib/imparcial/driver/postgre.rb
53
+ ./lib/imparcial/driver/mysql.rb
54
+ ./lib/imparcial/driver/mysql/expression/table.rb
55
+ ./lib/imparcial/driver/mysql/result.rb
56
+ ./lib/imparcial/driver/mysql/typemap.rb
57
+ ./lib/imparcial/driver/mysql/expression.rb
58
+ ./lib/imparcial/driver/mysql/util.rb
59
+ ./lib/imparcial/driver/mysql/sql/table.rb
60
+ ./lib/imparcial/driver/mysql/sql/constraint.rb
61
+ ./lib/imparcial/driver/mysql/sql/sequence.rb
62
+ ./lib/imparcial/driver/mysql/sql/index.rb
63
+ ./lib/imparcial/driver/mysql/sql/column.rb
64
+ ./lib/imparcial/driver/mysql/sql.rb
65
+ ./lib/imparcial/driver/postgre/result.rb
66
+ ./lib/imparcial/driver/postgre/typemap.rb
67
+ ./lib/imparcial/driver/postgre/expression.rb
68
+ ./lib/imparcial/driver/postgre/util.rb
69
+ ./lib/imparcial/driver/postgre/sql/table.rb
70
+ ./lib/imparcial/driver/postgre/sql/constraint.rb
71
+ ./lib/imparcial/driver/postgre/sql/sequence.rb
72
+ ./lib/imparcial/driver/postgre/sql/index.rb
73
+ ./lib/imparcial/driver/postgre/sql/column.rb
74
+ ./lib/imparcial/driver/postgre/sql.rb
75
+ ./lib/imparcial/driver.rb
76
+ ./lib/imparcial/initializer.rb
77
+ ./lib/imparcial/exception.rb
78
+ ./lib/imparcial.rb
79
+ ./README.txt
data/README.txt CHANGED
@@ -1,26 +1,90 @@
1
- Imparcial-0.0.3
1
+ Imparcial, Database Abstraction Layer
2
2
  by Guilherme Antoniolo Ferreira
3
- url
4
3
 
5
4
  == DESCRIPTION:
6
5
 
7
- Database Abstraction Layer for Ruby
6
+ Imparcial is a Database Abstraction Layer for Ruby. It's designed not only to
7
+ be a connection and result-set wrapping, one can also manipulate databases'
8
+ mechanisms with ruby structures as well as by using SQL syntaxes.
9
+ Furthermore, Imparcial is primarly intented to be a library for developing
10
+ ORMs, although one can use it in any application as long as that application
11
+ needs an abstraction layer.
8
12
 
9
13
  == FEATURES/PROBLEMS:
10
14
 
11
- * none
15
+ * API may change;
12
16
 
13
- == SYNOPSIS:
17
+ == SUPPORTED DATABASES:
14
18
 
15
- none
19
+ * PostgreSQL
20
+ * MySQL
21
+
22
+ == USAGE:
23
+
24
+ * Initializing the adapter:
25
+ adapter = Imparcial::Initializer.adapter(:mysql) do |config|
26
+
27
+ config.username = 'batman'
28
+ config.password = 'joker_suckz'
29
+ config.database = 'batcave'
30
+ config.logger = Logger.new(STDERR)
31
+
32
+ end
33
+
34
+ adapter.connect
35
+
36
+ And that's all. You may also specify :port, :host
37
+
38
+ * Getting Tables from a specific database:
39
+ abstract_adapter
40
+
41
+ adapter.get_tables # => ['person', 'invoice', 'product', 'supplier']
42
+
43
+ * Creating a Table
44
+ adapter.create_table :table_name => 'user', :fields => [{:name => :id, :type => :integer},
45
+ {:name => :name, :type => :string}]
46
+
47
+ adapter.table_exists? :table_name => 'user' # => true
48
+
49
+ * Inserting Records
50
+ adapter.insert :table_name => 'user', :values => {:id => 1, :name => 'robin'}
51
+ adapter.insert :table_name => 'user', :values => {:id => 2, :name => 'penguim'}
52
+
53
+ * Deleting Records
54
+ adapter.delete :table_name => 'user', :conditions => ['id = ?', 1]
55
+
56
+ * Selecting Records
57
+ adapter.select :table_name => 'user'
58
+ adapter.result.each do |id, name|
59
+ puts 'displaying info:'
60
+ puts "#{id.column_name} = #{id.column_value}"
61
+ puts "#{name.column_name} = "#{name.column_value}"
62
+ end
63
+
64
+ * Dropping a Table
65
+ adapter.drop_table :table_name => 'user'
66
+
67
+ Make sure to check the API for more features!
16
68
 
17
69
  == REQUIREMENTS:
18
70
 
19
71
  * facets
72
+ * rake
73
+ * hoe
20
74
 
21
75
  == INSTALL:
76
+ Always get the lastest version!
77
+
78
+ Firstly, install the adapter's specific driver.
79
+ * gem install mysql
80
+
81
+ Secondly, install the dependencies:
82
+ * gem install facets
83
+ * gem install rake
84
+ * gem install hoe
22
85
 
23
- * sudo gem install imparcial
86
+ Now, the lib:
87
+ * gem install imparcial
24
88
 
25
89
  == LICENSE:
26
90
 
data/Rakefile CHANGED
@@ -41,7 +41,7 @@ Hoe.new('imparcial', Imparcial::VERSION) do |s|
41
41
  s.author = 'Guilherme Antoniolo Ferreira'
42
42
  s.email = 'antonio@gmail.com'
43
43
 
44
- s.extra_deps << 'facets'
44
+ s.extra_deps << 'facets' << 'rake' << 'hoe'
45
45
  s.remote_rdoc_dir = ''
46
46
  s.changes = s.paragraphs_of('History.txt', 0..1).join("\n\n")
47
47
 
@@ -0,0 +1,313 @@
1
+ module Imparcial
2
+ module Driver
3
+ module AbstractExpression
4
+ module Column
5
+
6
+ ###########################################
7
+ # #
8
+ # Column Dropping #
9
+ # #
10
+ ###########################################
11
+
12
+ private
13
+
14
+ def expected_options_for_dropping_columns
15
+
16
+ {:table_name => :required, :fields => :required}
17
+
18
+ end
19
+
20
+ public
21
+
22
+ # === Description
23
+ # Drop some columns.
24
+ #
25
+ # === Usage
26
+ # abstract_adapter.drop_columns :table_name => 'person', :fields => ['id','name']
27
+ #
28
+ # === Options
29
+ # * :table_name
30
+ # * :fields
31
+ #
32
+ # === Returning
33
+ # nothing
34
+
35
+ def drop_columns ( options = {} )
36
+
37
+ check_options expected_options_for_dropping_columns, options
38
+
39
+ sql = sql_for_dropping_columns( options )
40
+
41
+ logger.warn sql if @column_logging
42
+
43
+ query sql
44
+
45
+ rescue adapter_specific_exception => ex
46
+
47
+ raise ColumnDropError.new(ex.message)
48
+
49
+ end
50
+
51
+ ###########################################
52
+ # #
53
+ # Column Creation #
54
+ # #
55
+ ###########################################
56
+
57
+ private
58
+
59
+ def expected_options_for_adding_columns
60
+
61
+ {:table_name => :required, :fields => :required}
62
+
63
+ end
64
+
65
+ public
66
+
67
+ # === Description
68
+ # Add some columns without dropping any table.
69
+ #
70
+ # === Usage
71
+ # abstract_adapter.add_columns :table_name => 'person',
72
+ # :fields => [{:name => :age, :type => :integer]
73
+ #
74
+ # === Options
75
+ # * :table_name
76
+ # * :fields
77
+ #
78
+ # === Returning
79
+ # nothing
80
+
81
+ def add_columns ( options = {} )
82
+
83
+ check_options expected_options_for_adding_columns, options
84
+
85
+ sql = sql_for_adding_columns( options )
86
+
87
+ logger.warn sql if @column_logging
88
+
89
+ query sql
90
+
91
+ rescue adapter_specific_exception => ex
92
+
93
+ raise ColumnCreateError.new(ex.message)
94
+
95
+ end
96
+
97
+ ###########################################
98
+ # #
99
+ # Column Listing #
100
+ # #
101
+ ###########################################
102
+
103
+ private
104
+
105
+ def expected_options_for_getting_columns_information
106
+
107
+ {:table_name => :required}
108
+
109
+ end
110
+
111
+ public
112
+
113
+ # === Description
114
+ # Get name,type and size from every column in a given table.
115
+ #
116
+ # === Usage
117
+ # abstract_adapter.get_columns_information :table_name => 'person'
118
+ #
119
+ # === Options
120
+ # * :table_name
121
+ #
122
+ # === Returning
123
+ # an array with hashes.
124
+ # * :name
125
+ # * :type
126
+ # * :size
127
+
128
+ def get_columns_information ( options = {} )
129
+
130
+ check_options expected_options_for_getting_columns_information, options
131
+
132
+ sql = sql_for_getting_columns_information( options )
133
+
134
+ logger.warn sql if @column_logging
135
+
136
+ query sql
137
+
138
+ fields = []
139
+
140
+ result.fetch do |name, type, size|
141
+
142
+ field = column_to_field :name => name.value, :type => type.value, :size => size.value
143
+
144
+ fields << field
145
+
146
+ end
147
+
148
+ fields
149
+
150
+ rescue adapter_specific_exception => ex
151
+
152
+ raise ColumnListError.new(ex.message)
153
+
154
+ end
155
+
156
+ private
157
+
158
+ def expected_options_for_getting_column_information
159
+
160
+ {:table_name => :required, :field_name => :required}
161
+
162
+ end
163
+
164
+ public
165
+
166
+ # === Description
167
+ # Get name,type and size from a column in a given table.
168
+ # See :get_columns_information
169
+
170
+ def get_column_information ( options = {} )
171
+
172
+ check_options expected_options_for_getting_column_information, options
173
+
174
+ sql = sql_for_getting_column_information options
175
+
176
+ logger.warn sql if @column_logging
177
+
178
+ query sql
179
+
180
+ name, type, size = result.fetch_first_row
181
+
182
+ column_to_field :name => name.value, :type => type.value, :size => size.value
183
+
184
+ end
185
+
186
+ ###########################################
187
+ # #
188
+ # Column Renaming #
189
+ # #
190
+ ###########################################
191
+
192
+ private
193
+
194
+ def expected_options_for_renaming_column
195
+
196
+ {:table_name => :required, :field => :required}
197
+
198
+ end
199
+
200
+ public
201
+
202
+ # === Description
203
+ # Rename a column.
204
+ #
205
+ # === Usage
206
+ # abstract_adapter.rename_column :table_name => 'person', :field => {:id => :super_id}
207
+ #
208
+ # === Options
209
+ # * :table_name
210
+ # * :fields
211
+ #
212
+ # === Returning
213
+ # nothing
214
+
215
+ def rename_column ( options = {} )
216
+
217
+ check_options expected_options_for_renaming_column, options
218
+
219
+ sql = sql_for_renaming_column( options )
220
+
221
+ logger.warn sql if @column_logging
222
+
223
+ query sql
224
+
225
+ rescue adapter_specific_exception => ex
226
+
227
+ raise ColumnRenameError.new(ex.message)
228
+
229
+ end
230
+
231
+ private
232
+
233
+ def expected_options_for_renaming_columns
234
+
235
+ {:table_name => :required, :fields => :required}
236
+
237
+ end
238
+
239
+ public
240
+
241
+ # === Description
242
+ # Rename a bunch of columns. See :rename_column for further info.
243
+
244
+ def rename_columns ( options = {} )
245
+
246
+ check_options expected_options_for_renaming_columns, options
247
+
248
+ options[:fields].each do |old_field,new_field|
249
+
250
+ sql = sql_for_renaming_column( :table_name => options[:table_name], :field => {old_field => new_field})
251
+
252
+ logger.warn sql if @column_logging
253
+
254
+ query sql
255
+
256
+ end
257
+
258
+ rescue adapter_specific_exception => ex
259
+
260
+ raise ColumnRenameError.new(ex.message)
261
+
262
+ end
263
+
264
+ ###########################################
265
+ # #
266
+ # Column Modification #
267
+ # #
268
+ ###########################################
269
+
270
+ private
271
+
272
+ def expected_options_for_modifying_columns
273
+
274
+ {:table_name => :required, :fields => :required}
275
+
276
+ end
277
+
278
+ public
279
+
280
+ # === Description
281
+ # Modify column type and size if needed.
282
+ #
283
+ # === Usage
284
+ # abstract_adapter.modify_columns :table_name => 'person',
285
+ # :fields => [{:name => :id, :type => :float}]
286
+ #
287
+ # === Options
288
+ # * :table_name
289
+ # * :fields
290
+ #
291
+ # === Returning
292
+ # nothing
293
+
294
+ def modify_columns ( options = {} )
295
+
296
+ check_options expected_options_for_modifying_columns, options
297
+
298
+ sql = sql_for_modifying_columns( options )
299
+
300
+ logger.warn sql if @column_logging
301
+
302
+ query sql
303
+
304
+ rescue adapter_specific_exception => ex
305
+
306
+ raise ColumnUpdateError.new(ex.message)
307
+
308
+ end
309
+
310
+ end
311
+ end
312
+ end
313
+ end
@@ -0,0 +1,149 @@
1
+ module Imparcial
2
+ module Driver
3
+ module AbstractExpression
4
+ module Constraint
5
+
6
+ ###########################################
7
+ # #
8
+ # Primary Key #
9
+ # #
10
+ ###########################################
11
+
12
+ private
13
+
14
+ def expected_options_for_adding_primary_key
15
+
16
+ {:table_name => :required, :fields => :required}
17
+
18
+ end
19
+
20
+ public
21
+
22
+ # === Description
23
+ # Make a bunch of fields primary key.
24
+ #
25
+ # === Usage
26
+ # abstract_adapter.primary_key :table_name => 'person',
27
+ # :fields => ['id','name']
28
+ #
29
+ # === Options
30
+ # * :table_name
31
+ # * :fields
32
+ #
33
+ # === Returning
34
+ # nothing
35
+
36
+ def add_primary_key ( options = {} )
37
+
38
+ check_options expected_options_for_adding_primary_key, options
39
+
40
+ sql = sql_for_adding_primary_key( options )
41
+
42
+ logger.warn sql if @column_logging
43
+
44
+ query sql
45
+
46
+ rescue adapter_specific_exception => ex
47
+
48
+ raise ColumnConstraintError.new(ex.message)
49
+
50
+ end
51
+
52
+ ###########################################
53
+ # #
54
+ # Auto Increment #
55
+ # #
56
+ ###########################################
57
+
58
+ private
59
+
60
+ def expected_options_for_adding_auto_increment
61
+
62
+ {:table_name => :required, :field => :required}
63
+
64
+ end
65
+
66
+ public
67
+
68
+ # === Description
69
+ # Make a bunch of fields auto increment.
70
+ #
71
+ # === Usage
72
+ # abstract_adapter.add_auto_increment :table_name => 'person',
73
+ # :fields => ['id','name']
74
+ #
75
+ # === Options
76
+ # * :table_name
77
+ # * :fields
78
+ #
79
+ # === Returning
80
+ # nothing
81
+
82
+ def add_auto_increment ( options = {} )
83
+
84
+ check_options expected_options_for_adding_auto_increment, options
85
+
86
+ add_primary_key :table_name => options[:table_name], :fields => [options[:field]]
87
+ sql = sql_for_adding_auto_increment( options )
88
+
89
+ logger.warn sql if @column_logging
90
+
91
+ query sql
92
+
93
+ rescue adapter_specific_exception => ex
94
+
95
+ raise ColumnConstraintError.new(ex.message)
96
+
97
+ end
98
+
99
+ ###########################################
100
+ # #
101
+ # Default Value #
102
+ # #
103
+ ###########################################
104
+
105
+ private
106
+
107
+ def expected_options_for_adding_default_value
108
+
109
+ {:table_name => :required, :fields => :required}
110
+
111
+ end
112
+
113
+ public
114
+
115
+ # === Description
116
+ # Add default value for some fields.
117
+ #
118
+ # === Usage
119
+ # abstract_adapter.add_default_value :table_name => 'person',
120
+ # :fields => {:id => 1, :name => 'jota'}
121
+ #
122
+ # === Options
123
+ # * :table_name
124
+ # * :fields
125
+ #
126
+ # === Returning
127
+ # nothing
128
+
129
+ def add_default_value ( options = {} )
130
+
131
+ check_options expected_options_for_adding_default_value, options
132
+
133
+ sql = sql_for_adding_default_value( options )
134
+
135
+ logger.warn sql if @column_logging
136
+
137
+ query sql
138
+
139
+ rescue adapter_specific_exception => ex
140
+
141
+ raise ColumnConstraintError.new(ex.message)
142
+
143
+ end
144
+
145
+ end
146
+ end
147
+ end
148
+ end
149
+