imparcial 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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
+