baza 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,7 +21,7 @@ class Baza::Driver::Mysql::Tables
21
21
 
22
22
  #Returns a table by the given table-name.
23
23
  def [](table_name)
24
- table_name = table_name.to_s
24
+ table_name = table_name.to_sym
25
25
 
26
26
  begin
27
27
  return @list[table_name]
@@ -45,20 +45,22 @@ class Baza::Driver::Mysql::Tables
45
45
 
46
46
  @list_mutex.synchronize do
47
47
  @db.q(sql) do |d_tables|
48
- obj = @list.get!(d_tables[:Name])
48
+ name = d_tables[:Name].to_sym
49
+ obj = @list.get!(name)
49
50
 
50
51
  if !obj
51
52
  obj = Baza::Driver::Mysql::Tables::Table.new(
52
53
  :db => @db,
53
- :data => d_tables
54
+ :data => d_tables,
55
+ :tables => self
54
56
  )
55
- @list[d_tables[:Name]] = obj
57
+ @list[name] = obj
56
58
  end
57
59
 
58
60
  if block_given?
59
61
  yield(obj)
60
62
  else
61
- ret[d_tables[:Name]] = obj
63
+ ret[name] = obj
62
64
  end
63
65
  end
64
66
  end
@@ -70,25 +72,26 @@ class Baza::Driver::Mysql::Tables
70
72
  end
71
73
  end
72
74
 
75
+ CREATE_ALLOWED_KEYS = [:columns, :indexes, :temp, :return_sql]
73
76
  #Creates a new table by the given name and data.
74
77
  def create(name, data, args = nil)
75
- raise "No columns was given for '#{name}'." if !data["columns"] or data["columns"].empty?
78
+ raise "No columns was given for '#{name}'." if !data[:columns] or data[:columns].empty?
76
79
 
77
80
  sql = "CREATE"
78
- sql << " TEMPORARY" if data["temp"]
81
+ sql << " TEMPORARY" if data[:temp]
79
82
  sql << " TABLE `#{name}` ("
80
83
 
81
84
  first = true
82
- data["columns"].each do |col_data|
85
+ data[:columns].each do |col_data|
83
86
  sql << ", " if !first
84
87
  first = false if first
85
- col_data.delete("after") if col_data["after"]
88
+ col_data.delete(:after) if col_data[:after]
86
89
  sql << @db.cols.data_sql(col_data)
87
90
  end
88
91
 
89
- if data["indexes"] and !data["indexes"].empty?
92
+ if data[:indexes] and !data[:indexes].empty?
90
93
  sql << ", "
91
- sql << Baza::Driver::Mysql::Tables::Table.create_indexes(data["indexes"], {
94
+ sql << Baza::Driver::Mysql::Tables::Table.create_indexes(data[:indexes], {
92
95
  :db => @db,
93
96
  :return_sql => true,
94
97
  :create => false,
@@ -102,10 +105,22 @@ class Baza::Driver::Mysql::Tables
102
105
  return [sql] if args and args[:return_sql]
103
106
  @db.query(sql)
104
107
  end
108
+
109
+ private
110
+
111
+ def add_to_list(table)
112
+ raise "Already exists: '#{table.name}'." if @list.key?(table.name) and @list[table.name].__id__ != table.__id__
113
+ @list[table.name] = table
114
+ end
115
+
116
+ def remove_from_list(table)
117
+ raise "Table not in list: '#{table.name}'." if !@list.key?(table.name)
118
+ @list.delete(table.name)
119
+ end
105
120
  end
106
121
 
107
122
  class Baza::Driver::Mysql::Tables::Table
108
- attr_reader :list
123
+ attr_reader :list, :name
109
124
 
110
125
  def initialize(args)
111
126
  @args = args
@@ -114,6 +129,8 @@ class Baza::Driver::Mysql::Tables::Table
114
129
  @subtype = @db.opts[:subtype]
115
130
  @list = Wref_map.new
116
131
  @indexes_list = Wref_map.new
132
+ @name = @data[:Name].to_sym
133
+ @tables = args[:tables]
117
134
 
118
135
  raise "Could not figure out name from: '#{@data}'." if @data[:Name].to_s.strip.length <= 0
119
136
  end
@@ -127,13 +144,11 @@ class Baza::Driver::Mysql::Tables::Table
127
144
  return @data[:Name]
128
145
  end
129
146
 
130
- def name
131
- return @data[:Name]
132
- end
133
-
134
147
  def drop
135
148
  raise "Cant drop native table: '#{self.name}'." if self.native?
136
- @db.query("DROP TABLE `#{self.name}`")
149
+ @db.query("DROP TABLE `#{@db.esc_table(self.name)}`")
150
+ @tables.__send__(:remove_from_list, self)
151
+ return nil
137
152
  end
138
153
 
139
154
  #Returns true if the table is safe to drop.
@@ -143,16 +158,16 @@ class Baza::Driver::Mysql::Tables::Table
143
158
  end
144
159
 
145
160
  def optimize
146
- @db.query("OPTIMIZE TABLE `#{self.name}`")
161
+ @db.query("OPTIMIZE TABLE `#{@db.esc_table(self.name)}`")
147
162
  return self
148
163
  end
149
164
 
150
165
  def rows_count
151
- return @data[:Rows].to_i
166
+ return @db.q("SELECT COUNT(*) AS count FROM `#{@db.esc_table(self.name)}`").fetch[:count].to_i
152
167
  end
153
168
 
154
169
  def column(name)
155
- name = name.to_s
170
+ name = name.to_sym
156
171
 
157
172
  if col = @list.get!(name)
158
173
  return @list[name]
@@ -168,11 +183,12 @@ class Baza::Driver::Mysql::Tables::Table
168
183
  def columns(args = nil)
169
184
  @db.cols
170
185
  ret = {}
171
- sql = "SHOW FULL COLUMNS FROM `#{self.name}`"
186
+ sql = "SHOW FULL COLUMNS FROM `#{@db.esc_table(self.name)}`"
172
187
  sql << " WHERE `Field` = '#{@db.esc(args[:name])}'" if args and args.key?(:name)
173
188
 
174
189
  @db.q(sql) do |d_cols|
175
- obj = @list.get!(d_cols[:Field].to_s)
190
+ name = d_cols[:Field].to_sym
191
+ obj = @list.get!(name)
176
192
 
177
193
  if !obj
178
194
  obj = Baza::Driver::Mysql::Columns::Column.new(
@@ -180,13 +196,13 @@ class Baza::Driver::Mysql::Tables::Table
180
196
  :db => @db,
181
197
  :data => d_cols
182
198
  )
183
- @list[d_cols[:Field].to_s] = obj
199
+ @list[name] = obj
184
200
  end
185
201
 
186
202
  if block_given?
187
203
  yield(obj)
188
204
  else
189
- ret[d_cols[:Field].to_s] = obj
205
+ ret[name] = obj
190
206
  end
191
207
  end
192
208
 
@@ -201,7 +217,7 @@ class Baza::Driver::Mysql::Tables::Table
201
217
  @db.indexes
202
218
  ret = {}
203
219
 
204
- sql = "SHOW INDEX FROM `#{self.name}`"
220
+ sql = "SHOW INDEX FROM `#{@db.esc_table(self.name)}`"
205
221
  sql << " WHERE `Key_name` = '#{@db.esc(args[:name])}'" if args and args.key?(:name)
206
222
 
207
223
  @db.q(sql) do |d_indexes|
@@ -248,9 +264,11 @@ class Baza::Driver::Mysql::Tables::Table
248
264
  end
249
265
 
250
266
  def create_columns(col_arr)
251
- col_arr.each do |col_data|
252
- sql = "ALTER TABLE `#{self.name}` ADD COLUMN #{@db.cols.data_sql(col_data)};"
253
- @db.query(sql)
267
+ @db.transaction do
268
+ col_arr.each do |col_data|
269
+ sql = "ALTER TABLE `#{self.name}` ADD COLUMN #{@db.cols.data_sql(col_data)};"
270
+ @db.query(sql)
271
+ end
254
272
  end
255
273
  end
256
274
 
@@ -275,12 +293,12 @@ class Baza::Driver::Mysql::Tables::Table
275
293
  sql << "CREATE"
276
294
  end
277
295
 
278
- if index_data.is_a?(String)
279
- index_data = {"name" => index_data, "columns" => [index_data]}
296
+ if index_data.is_a?(String) or index_data.is_a?(Symbol)
297
+ index_data = {:name => index_data, :columns => [index_data]}
280
298
  end
281
299
 
282
- raise "No name was given." if !index_data.key?("name") or index_data["name"].strip.length <= 0
283
- raise "No columns was given on index: '#{index_data["name"]}'." if !index_data["columns"] or index_data["columns"].empty?
300
+ raise "No name was given: '#{index_data}'." if !index_data.key?(:name) or index_data[:name].to_s.strip.empty?
301
+ raise "No columns was given on index: '#{index_data[:name]}'." if !index_data[:columns] or index_data[:columns].empty?
284
302
 
285
303
  if args[:return_sql]
286
304
  if first
@@ -290,8 +308,8 @@ class Baza::Driver::Mysql::Tables::Table
290
308
  end
291
309
  end
292
310
 
293
- sql << " UNIQUE" if index_data["unique"]
294
- sql << " INDEX `#{db.esc_col(index_data["name"])}`"
311
+ sql << " UNIQUE" if index_data[:unique]
312
+ sql << " INDEX `#{db.esc_col(index_data[:name])}`"
295
313
 
296
314
  if args[:on_table] or !args.key?(:on_table)
297
315
  sql << " ON `#{db.esc_table(args[:table_name])}`"
@@ -300,7 +318,7 @@ class Baza::Driver::Mysql::Tables::Table
300
318
  sql << " ("
301
319
 
302
320
  first = true
303
- index_data["columns"].each do |col_name|
321
+ index_data[:columns].each do |col_name|
304
322
  sql << ", " if !first
305
323
  first = false if first
306
324
 
@@ -322,31 +340,35 @@ class Baza::Driver::Mysql::Tables::Table
322
340
  end
323
341
 
324
342
  def rename(newname)
343
+ newname = newname.to_sym
325
344
  oldname = self.name
326
- @db.query("ALTER TABLE `#{oldname}` RENAME TO `#{newname}`")
327
- @db.tables.list[newname] = self
328
- @db.tables.list.delete(oldname)
345
+
346
+ @tables.__send__(:remove_from_list, self)
347
+ @db.query("ALTER TABLE `#{@db.esc_table(oldname)}` RENAME TO `#{@db.esc_table(newname)}`")
348
+
329
349
  @data[:Name] = newname
350
+ @name = newname
351
+ @tables.__send__(:add_to_list, self)
330
352
  end
331
353
 
332
354
  def truncate
333
- @db.query("TRUNCATE `#{self.name}`")
355
+ @db.query("TRUNCATE `#{@db.esc_table(self.name)}`")
334
356
  return self
335
357
  end
336
358
 
337
359
  def data
338
360
  ret = {
339
- "name" => self.name,
340
- "columns" => [],
341
- "indexes" => []
361
+ :name => self.name,
362
+ :columns => [],
363
+ :indexes => []
342
364
  }
343
365
 
344
366
  columns.each do |name, column|
345
- ret["columns"] << column.data
367
+ ret[:columns] << column.data
346
368
  end
347
369
 
348
370
  indexes.each do |name, index|
349
- ret["indexes"] << index.data if name != "PRIMARY"
371
+ ret[:indexes] << index.data if name != "PRIMARY"
350
372
  end
351
373
 
352
374
  return ret
@@ -356,11 +378,6 @@ class Baza::Driver::Mysql::Tables::Table
356
378
  @db.insert(self.name, data)
357
379
  end
358
380
 
359
- #Returns the current engine of the table.
360
- def engine
361
- return @data[:Engine]
362
- end
363
-
364
381
  def clone(newname, args = {})
365
382
  raise "Invalid name." if newname.to_s.strip.empty?
366
383
 
@@ -374,19 +391,19 @@ class Baza::Driver::Mysql::Tables::Table
374
391
  first = false if first
375
392
 
376
393
  col_data = col.data
377
- pkey_found = true if !pkey_found and col_data["primarykey"] and args[:force_single_pkey]
394
+ pkey_found = true if !pkey_found and col_data[:primarykey] and args[:force_single_pkey]
378
395
 
379
- if args[:no_pkey] or (pkey_found and col_data["primarykey"] and args[:force_single_pkey])
380
- col_data["primarykey"] = false
396
+ if args[:no_pkey] or (pkey_found and col_data[:primarykey] and args[:force_single_pkey])
397
+ col_data[:primarykey] = false
381
398
  end
382
399
 
383
- if col_data["primarykey"]
384
- pkeys << col_data["name"]
385
- col_data.delete("primarykey")
400
+ if col_data[:primarykey]
401
+ pkeys << col_data[:name]
402
+ col_data.delete(:primarykey)
386
403
  end
387
404
 
388
405
  if args[:all_cols_storage]
389
- col_data["storage"] = args[:all_cols_storage]
406
+ col_data[:storage] = args[:all_cols_storage]
390
407
  end
391
408
 
392
409
  sql << @db.cols.data_sql(col_data)
@@ -410,14 +427,12 @@ class Baza::Driver::Mysql::Tables::Table
410
427
  sql << " ENGINE=#{args[:engine]}" if args[:engine]
411
428
  sql << ";"
412
429
 
413
- puts sql
414
-
415
430
  #Create table.
416
431
  @db.query(sql)
417
432
 
418
433
 
419
434
  #Insert data of previous data in a single query.
420
- @db.query("INSERT INTO `#{newname}` SELECT * FROM `#{self.name}`")
435
+ @db.query("INSERT INTO `#{@db.esc_table(newname)}` SELECT * FROM `#{@db.esc_table(self.name)}`")
421
436
 
422
437
 
423
438
  #Create indexes.
@@ -434,10 +449,27 @@ class Baza::Driver::Mysql::Tables::Table
434
449
  return new_table
435
450
  end
436
451
 
452
+ #Returns the current engine of the table.
453
+ def engine
454
+ return @data[:Engine]
455
+ end
456
+
437
457
  #Changes the engine for a table.
438
458
  def engine=(newengine)
439
459
  raise "Invalid engine: '#{newengine}'." if !newengine.to_s.match(/^[A-z]+$/)
440
460
  @db.query("ALTER TABLE `#{@db.esc_table(self.name)}` ENGINE = #{newengine}") if self.engine.to_s != newengine.to_s
441
461
  @data[:Engine] = newengine
442
462
  end
463
+
464
+ private
465
+
466
+ def remove_column_from_list(col)
467
+ raise "Column not found: '#{col.name}'." if !@list.key?(col.name)
468
+ @list.delete(col.name)
469
+ end
470
+
471
+ def add_column_to_list(col)
472
+ raise "Column already exists: '#{col.name}'." if @list.key?(col.name)
473
+ @list[col.name] = col
474
+ end
443
475
  end
@@ -3,6 +3,21 @@ class Baza::Driver::Sqlite3
3
3
  attr_reader :knjdb, :conn, :sep_table, :sep_col, :sep_val, :symbolize
4
4
  attr_accessor :tables, :cols, :indexes
5
5
 
6
+ #Helper to enable automatic registering of database using Baza::Db.from_object
7
+ def self.from_object(args)
8
+ if args[:object].class.name == "SQLite3::Database"
9
+ return {
10
+ :type => :success,
11
+ :args => {
12
+ :type => "sqlite3",
13
+ :conn => args[:object]
14
+ }
15
+ }
16
+ end
17
+
18
+ return nil
19
+ end
20
+
6
21
  #Constructor. This should not be called manually.
7
22
  def initialize(knjdb_ob)
8
23
  @sep_table = "`"
@@ -12,52 +27,51 @@ class Baza::Driver::Sqlite3
12
27
  @knjdb = knjdb_ob
13
28
  @path = @knjdb.opts[:path] if @knjdb.opts[:path]
14
29
  @path = @knjdb.opts["path"] if @knjdb.opts["path"]
15
- @symbolize = true if !@knjdb.opts.key?(:return_keys) or @knjdb.opts[:return_keys] == "symbols"
16
30
 
17
31
  @knjdb.opts[:subtype] = "java" if !@knjdb.opts.key?(:subtype) and RUBY_ENGINE == "jruby"
18
- raise "No path was given." if !@path
19
32
 
20
- if @knjdb.opts[:subtype] == "java"
21
- if @knjdb.opts[:sqlite_driver]
22
- require @knjdb.opts[:sqlite_driver]
33
+ if @knjdb.opts[:conn]
34
+ @conn = @knjdb.opts[:conn]
35
+ else
36
+ raise "No path was given." if !@path
37
+
38
+ if @knjdb.opts[:subtype] == "java"
39
+ if @knjdb.opts[:sqlite_driver]
40
+ require @knjdb.opts[:sqlite_driver]
41
+ else
42
+ require "#{File.dirname(__FILE__)}/../../../jruby/sqlitejdbc-v056.jar"
43
+ end
44
+
45
+ require "java"
46
+ import "org.sqlite.JDBC"
47
+ @conn = java.sql.DriverManager::getConnection("jdbc:sqlite:#{@knjdb.opts[:path]}")
48
+ @stat = @conn.createStatement
49
+ elsif @knjdb.opts[:subtype] == "rhodes"
50
+ @conn = SQLite3::Database.new(@path, @path)
23
51
  else
24
- require "#{File.dirname(__FILE__)}/../../../jruby/sqlitejdbc-v056.jar"
52
+ @conn = SQLite3::Database.open(@path)
53
+ @conn.results_as_hash = true
54
+ @conn.type_translation = false
25
55
  end
26
-
27
- require "java"
28
- import "org.sqlite.JDBC"
29
- @conn = java.sql.DriverManager::getConnection("jdbc:sqlite:#{@knjdb.opts[:path]}")
30
- @stat = @conn.createStatement
31
- elsif @knjdb.opts[:subtype] == "rhodes"
32
- @conn = SQLite3::Database.new(@path, @path)
33
- else
34
- @conn = SQLite3::Database.open(@path)
35
- @conn.results_as_hash = true
36
- @conn.type_translation = false
37
56
  end
38
57
  end
39
58
 
40
59
  #Executes a query against the driver.
41
60
  def query(string)
42
- begin
43
- if @knjdb.opts[:subtype] == "rhodes"
44
- return Baza::Driver::Sqlite3_result.new(self, @conn.execute(string, string))
45
- elsif @knjdb.opts[:subtype] == "java"
46
- begin
47
- return Baza::Driver::Sqlite3_result_java.new(self, @stat.executeQuery(string))
48
- rescue java.sql.SQLException => e
49
- if e.message.to_s.index("query does not return ResultSet") != nil
50
- return Baza::Driver::Sqlite3_result_java.new(self, nil)
51
- else
52
- raise e
53
- end
61
+ if @knjdb.opts[:subtype] == :rhodes
62
+ return Baza::Driver::Sqlite3::Result.new(self, @conn.execute(string, string))
63
+ elsif @knjdb.opts[:subtype] == :java
64
+ begin
65
+ return Baza::Driver::Sqlite3::ResultJava.new(self, @stat.executeQuery(string))
66
+ rescue java.sql.SQLException => e
67
+ if e.message.to_s.index("query does not return ResultSet") != nil
68
+ return Baza::Driver::Sqlite3::ResultJava.new(self, nil)
69
+ else
70
+ raise e
54
71
  end
55
- else
56
- return Baza::Driver::Sqlite3_result.new(self, @conn.execute(string))
57
72
  end
58
- rescue => e
59
- #Add SQL to the error message.
60
- raise e.class, "#{e.message} (SQL: #{string})"
73
+ else
74
+ return Baza::Driver::Sqlite3::Result.new(self, @conn.execute(string))
61
75
  end
62
76
  end
63
77
 
@@ -98,10 +112,24 @@ class Baza::Driver::Sqlite3
98
112
  yield(@knjdb)
99
113
  end
100
114
  end
115
+
116
+ def insert_multi(tablename, arr_hashes, args = nil)
117
+ sql = [] if args and args[:return_sql]
118
+
119
+ @knjdb.transaction do
120
+ arr_hashes.each do |hash|
121
+ res = @knjdb.insert(tablename, hash, args)
122
+ sql << res if args and args[:return_sql]
123
+ end
124
+ end
125
+
126
+ return sql if args and args[:return_sql]
127
+ return nil
128
+ end
101
129
  end
102
130
 
103
131
  #This class handels results when running in JRuby.
104
- class Baza::Driver::Sqlite3_result_java
132
+ class Baza::Driver::Sqlite3::ResultJava
105
133
  def initialize(driver, rs)
106
134
  @index = 0
107
135
  retkeys = driver.knjdb.opts[:return_keys]
@@ -114,8 +142,7 @@ class Baza::Driver::Sqlite3_result_java
114
142
  while rs.next
115
143
  row_data = {}
116
144
  for i in (1..columns_count)
117
- col_name = metadata.getColumnName(i)
118
- col_name = col_name.to_s.to_sym if retkeys == "symbols"
145
+ col_name = metadata.getColumnName(i).to_sym
119
146
  row_data[col_name] = rs.getString(i)
120
147
  end
121
148
 
@@ -142,17 +169,11 @@ class Baza::Driver::Sqlite3_result_java
142
169
  end
143
170
 
144
171
  #This class handels the result when running MRI (or others).
145
- class Baza::Driver::Sqlite3_result
172
+ class Baza::Driver::Sqlite3::Result
146
173
  #Constructor. This should not be called manually.
147
174
  def initialize(driver, result_array)
148
175
  @result_array = result_array
149
176
  @index = 0
150
-
151
- if driver.knjdb.opts[:return_keys] == "symbols"
152
- @symbols = true
153
- else
154
- @symbols = false
155
- end
156
177
  end
157
178
 
158
179
  #Returns a single result.
@@ -165,7 +186,7 @@ class Baza::Driver::Sqlite3_result
165
186
  result_hash.each do |key, val|
166
187
  if (Float(key) rescue false)
167
188
  #do nothing.
168
- elsif @symbols and !key.is_a?(Symbol)
189
+ elsif !key.is_a?(Symbol)
169
190
  ret[key.to_sym] = val
170
191
  else
171
192
  ret[key] = val
@@ -7,37 +7,39 @@ class Baza::Driver::Sqlite3::Columns
7
7
  @args = args
8
8
  end
9
9
 
10
+ DATA_SQL_ALLOWED_KEYS = [:name, :type, :maxlength, :autoincr, :primarykey, :null, :default, :default_func, :renames]
10
11
  #Returns SQL for a knjdb-compatible hash.
11
12
  def data_sql(data)
12
- raise "No type given." if !data["type"]
13
- type = data["type"].to_s
13
+ data.each do |key, val|
14
+ raise "Invalid key: '#{key}' (#{key.class.name})." unless DATA_SQL_ALLOWED_KEYS.include?(key)
15
+ end
16
+
17
+ raise "No type given." if !data[:type]
18
+ type = data[:type].to_sym
14
19
 
15
- if type == "enum"
16
- type = "varchar"
17
- data.delete("maxlength")
20
+ if type == :enum
21
+ type = :varchar
22
+ data.delete(:maxlength)
18
23
  end
19
24
 
20
- data["maxlength"] = 255 if type == "varchar" and !data.key?("maxlength")
21
- data["maxlength"] = 11 if type == "int" and !data.key?("maxlength") and !data["autoincr"] and !data["primarykey"]
22
- type = "integer" if @args[:db].int_types.index(type) and (data["autoincr"] or data["primarykey"])
25
+ data[:maxlength] = 255 if type == :varchar and !data.key?(:maxlength)
26
+ data[:maxlength] = 11 if type == :int and !data.key?(:maxlength) and !data[:autoincr] and !data[:primarykey]
27
+ type = :integer if @args[:db].int_types.index(type) and (data[:autoincr] or data[:primarykey])
23
28
 
24
- sql = "`#{data["name"]}` #{type}"
25
- sql << "(#{data["maxlength"]})" if data["maxlength"] and !data["autoincr"]
26
- sql << " PRIMARY KEY" if data["primarykey"]
27
- sql << " AUTOINCREMENT" if data["autoincr"]
29
+ sql = "`#{data[:name]}` #{type}"
30
+ sql << "(#{data[:maxlength]})" if data[:maxlength] and !data[:autoincr]
31
+ sql << " PRIMARY KEY" if data[:primarykey]
32
+ sql << " AUTOINCREMENT" if data[:autoincr]
28
33
 
29
- if !data["null"] and data.key?("null")
34
+ if !data[:null] and data.key?(:null)
30
35
  sql << " NOT NULL"
31
-
32
- if !data.key?("default") or !data["default"]
33
- data["default"] = 0 if type == "int"
34
- end
36
+ data[:default] = 0 if type == :int if !data.key?(:default) or !data[:default]
35
37
  end
36
38
 
37
- if data.key?("default_func")
38
- sql << " DEFAULT #{data["default_func"]}"
39
- elsif data.key?("default") and data["default"] != false
40
- sql << " DEFAULT '#{@args[:db].escape(data["default"])}'"
39
+ if data.key?(:default_func)
40
+ sql << " DEFAULT #{data[:default_func]}"
41
+ elsif data.key?(:default) and data[:default] != false
42
+ sql << " DEFAULT '#{@args[:db].escape(data[:default])}'"
41
43
  end
42
44
 
43
45
  return sql
@@ -67,13 +69,13 @@ class Baza::Driver::Sqlite3::Columns::Column
67
69
  #Returns the data of the column as a hash in knjdb-format.
68
70
  def data
69
71
  return {
70
- "type" => self.type,
71
- "name" => self.name,
72
- "null" => self.null?,
73
- "maxlength" => self.maxlength,
74
- "default" => self.default,
75
- "primarykey" => self.primarykey?,
76
- "autoincr" => self.autoincr?
72
+ :type => self.type,
73
+ :name => self.name,
74
+ :null => self.null?,
75
+ :maxlength => self.maxlength,
76
+ :default => self.default,
77
+ :primarykey => self.primarykey?,
78
+ :autoincr => self.autoincr?
77
79
  }
78
80
  end
79
81
 
@@ -133,7 +135,7 @@ class Baza::Driver::Sqlite3::Columns::Column
133
135
  def_val = def_val.to_s.slice(0, def_val.length - 1)
134
136
  end
135
137
 
136
- return false if @args[:data][:dflt_value].to_s.length == 0
138
+ return false if @args[:data][:dflt_value].to_s.empty?
137
139
  return def_val
138
140
  end
139
141
 
@@ -145,32 +147,32 @@ class Baza::Driver::Sqlite3::Columns::Column
145
147
 
146
148
  #Returns true if the column is auto-increasing.
147
149
  def autoincr?
148
- return true if @args[:data][:pk].to_i == 1 and @args[:data][:type].to_s == "integer"
150
+ return true if @args[:data][:pk].to_i == 1 and @args[:data][:type].to_sym == :integer
149
151
  return false
150
152
  end
151
153
 
152
154
  #Drops the column from the table.
153
155
  def drop
154
- self.table.copy("drops" => self.name)
156
+ self.table.copy(:drops => self.name)
155
157
  end
156
158
 
157
159
  #Changes data on the column. Like the name, type, maxlength or whatever.
158
160
  def change(data)
159
161
  newdata = data.clone
160
162
 
161
- newdata["name"] = self.name if !newdata.key?("name")
162
- newdata["type"] = self.type if !newdata.key?("type")
163
- newdata["maxlength"] = self.maxlength if !newdata.key?("maxlength") and self.maxlength
164
- newdata["null"] = self.null? if !newdata.key?("null")
165
- newdata["default"] = self.default if !newdata.key?("default")
166
- newdata["primarykey"] = self.primarykey? if !newdata.key?("primarykey")
163
+ newdata[:name] = self.name if !newdata.key?(:name)
164
+ newdata[:type] = self.type if !newdata.key?(:type)
165
+ newdata[:maxlength] = self.maxlength if !newdata.key?(:maxlength) and self.maxlength
166
+ newdata[:null] = self.null? if !newdata.key?(:null)
167
+ newdata[:default] = self.default if !newdata.key?(:default)
168
+ newdata[:primarykey] = self.primarykey? if !newdata.key?(:primarykey)
167
169
 
168
170
  @type = nil
169
171
  @maxlength = nil
170
172
 
171
173
  new_table = self.table.copy(
172
- "alter_columns" => {
173
- self.name.to_s => newdata
174
+ :alter_columns => {
175
+ self.name.to_sym => newdata
174
176
  }
175
177
  )
176
178
  end
@@ -22,8 +22,8 @@ class Baza::Driver::Sqlite3::Indexes::Index
22
22
 
23
23
  def data
24
24
  return {
25
- "name" => name,
26
- "columns" => @columns
25
+ :name => name,
26
+ :columns => @columns
27
27
  }
28
28
  end
29
29
  end