baza 0.0.20 → 0.0.21

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 (167) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +84 -0
  3. data/.rubocop_todo.yml +17 -135
  4. data/.travis.yml +21 -0
  5. data/Gemfile +10 -7
  6. data/Gemfile.lock +39 -44
  7. data/README.md +61 -3
  8. data/VERSION +1 -1
  9. data/baza.gemspec +146 -98
  10. data/config/best_project_practice_rubocop.yml +8 -0
  11. data/config/best_project_practice_rubocop_todo.yml +6 -0
  12. data/lib/baza.rb +8 -12
  13. data/lib/baza/base_sql_driver.rb +198 -52
  14. data/lib/baza/cloner.rb +1 -0
  15. data/lib/baza/column.rb +26 -0
  16. data/lib/baza/database.rb +19 -3
  17. data/lib/baza/db.rb +69 -271
  18. data/lib/baza/driver.rb +1 -6
  19. data/lib/baza/{drivers → driver}/active_record.rb +65 -21
  20. data/lib/baza/{drivers → driver}/active_record/columns.rb +0 -0
  21. data/lib/baza/driver/active_record/commands.rb +10 -0
  22. data/lib/baza/driver/active_record/databases.rb +10 -0
  23. data/lib/baza/{drivers → driver}/active_record/indexes.rb +0 -0
  24. data/lib/baza/{drivers → driver}/active_record/result.rb +3 -1
  25. data/lib/baza/{drivers → driver}/active_record/tables.rb +0 -0
  26. data/lib/baza/driver/active_record/users.rb +12 -0
  27. data/lib/baza/{drivers → driver}/mysql.rb +9 -26
  28. data/lib/baza/{drivers → driver}/mysql/column.rb +14 -35
  29. data/lib/baza/{drivers → driver}/mysql/columns.rb +9 -12
  30. data/lib/baza/driver/mysql/commands.rb +39 -0
  31. data/lib/baza/driver/mysql/database.rb +64 -0
  32. data/lib/baza/driver/mysql/databases.rb +63 -0
  33. data/lib/baza/{drivers → driver}/mysql/index.rb +0 -0
  34. data/lib/baza/{drivers → driver}/mysql/indexes.rb +0 -0
  35. data/lib/baza/{drivers → driver}/mysql/result.rb +15 -7
  36. data/lib/baza/{drivers → driver}/mysql/sqlspecs.rb +0 -0
  37. data/lib/baza/{drivers → driver}/mysql/table.rb +27 -43
  38. data/lib/baza/{drivers → driver}/mysql/tables.rb +5 -34
  39. data/lib/baza/{drivers → driver}/mysql/unbuffered_result.rb +8 -2
  40. data/lib/baza/driver/mysql/user.rb +22 -0
  41. data/lib/baza/driver/mysql/users.rb +39 -0
  42. data/lib/baza/{drivers → driver}/mysql2.rb +19 -49
  43. data/lib/baza/{drivers → driver}/mysql2/column.rb +0 -0
  44. data/lib/baza/{drivers → driver}/mysql2/columns.rb +0 -0
  45. data/lib/baza/driver/mysql2/commands.rb +2 -0
  46. data/lib/baza/{drivers → driver}/mysql2/database.rb +0 -0
  47. data/lib/baza/{drivers → driver}/mysql2/databases.rb +0 -0
  48. data/lib/baza/{drivers → driver}/mysql2/index.rb +0 -0
  49. data/lib/baza/{drivers → driver}/mysql2/indexes.rb +0 -0
  50. data/lib/baza/{drivers → driver}/mysql2/result.rb +3 -1
  51. data/lib/baza/{drivers → driver}/mysql2/table.rb +0 -0
  52. data/lib/baza/{drivers → driver}/mysql2/tables.rb +0 -0
  53. data/lib/baza/driver/mysql2/user.rb +2 -0
  54. data/lib/baza/driver/mysql2/users.rb +2 -0
  55. data/lib/baza/{drivers → driver}/mysql_java.rb +60 -38
  56. data/lib/baza/{drivers → driver}/mysql_java/column.rb +0 -0
  57. data/lib/baza/{drivers → driver}/mysql_java/columns.rb +0 -0
  58. data/lib/baza/driver/mysql_java/commands.rb +2 -0
  59. data/lib/baza/driver/mysql_java/database.rb +2 -0
  60. data/lib/baza/driver/mysql_java/databases.rb +2 -0
  61. data/lib/baza/{drivers → driver}/mysql_java/index.rb +0 -0
  62. data/lib/baza/{drivers → driver}/mysql_java/indexes.rb +0 -0
  63. data/lib/baza/{drivers → driver}/mysql_java/table.rb +0 -0
  64. data/lib/baza/{drivers → driver}/mysql_java/tables.rb +0 -0
  65. data/lib/baza/driver/mysql_java/user.rb +2 -0
  66. data/lib/baza/driver/mysql_java/users.rb +2 -0
  67. data/lib/baza/driver/pg.rb +80 -0
  68. data/lib/baza/driver/pg/column.rb +125 -0
  69. data/lib/baza/driver/pg/columns.rb +37 -0
  70. data/lib/baza/driver/pg/commands.rb +35 -0
  71. data/lib/baza/driver/pg/create_index_sql_creator.rb +51 -0
  72. data/lib/baza/driver/pg/database.rb +89 -0
  73. data/lib/baza/driver/pg/databases.rb +79 -0
  74. data/lib/baza/driver/pg/index.rb +35 -0
  75. data/lib/baza/driver/pg/indexes.rb +5 -0
  76. data/lib/baza/driver/pg/result.rb +139 -0
  77. data/lib/baza/driver/pg/table.rb +184 -0
  78. data/lib/baza/driver/pg/tables.rb +45 -0
  79. data/lib/baza/{drivers → driver}/sqlite3.rb +6 -24
  80. data/lib/baza/{drivers → driver}/sqlite3/column.rb +22 -24
  81. data/lib/baza/{drivers → driver}/sqlite3/columns.rb +6 -6
  82. data/lib/baza/driver/sqlite3/commands.rb +28 -0
  83. data/lib/baza/{drivers → driver}/sqlite3/database.rb +0 -0
  84. data/lib/baza/{drivers → driver}/sqlite3/databases.rb +0 -1
  85. data/lib/baza/{drivers → driver}/sqlite3/index.rb +0 -0
  86. data/lib/baza/{drivers → driver}/sqlite3/indexes.rb +0 -0
  87. data/lib/baza/{drivers → driver}/sqlite3/result.rb +14 -6
  88. data/lib/baza/{drivers → driver}/sqlite3/sqlspecs.rb +0 -0
  89. data/lib/baza/{drivers → driver}/sqlite3/table.rb +25 -16
  90. data/lib/baza/{drivers → driver}/sqlite3/tables.rb +5 -6
  91. data/lib/baza/{drivers → driver}/sqlite3/unbuffered_result.rb +8 -2
  92. data/lib/baza/{drivers → driver}/sqlite3_java.rb +13 -23
  93. data/lib/baza/{drivers → driver}/sqlite3_java/column.rb +0 -0
  94. data/lib/baza/{drivers → driver}/sqlite3_java/columns.rb +0 -0
  95. data/lib/baza/driver/sqlite3_java/commands.rb +2 -0
  96. data/lib/baza/{drivers → driver}/sqlite3_java/database.rb +0 -0
  97. data/lib/baza/{drivers → driver}/sqlite3_java/index.rb +0 -0
  98. data/lib/baza/{drivers → driver}/sqlite3_java/indexes.rb +0 -0
  99. data/lib/baza/{drivers → driver}/sqlite3_java/table.rb +0 -0
  100. data/lib/baza/{drivers → driver}/sqlite3_java/tables.rb +0 -0
  101. data/lib/baza/{drivers → driver}/sqlite3_java/unbuffered_result.rb +14 -9
  102. data/lib/baza/{drivers → driver}/sqlite3_rhodes.rb +6 -24
  103. data/lib/baza/errors.rb +2 -0
  104. data/lib/baza/idquery.rb +15 -8
  105. data/lib/baza/index.rb +7 -0
  106. data/lib/baza/jdbc_driver.rb +4 -16
  107. data/lib/baza/jdbc_result.rb +20 -12
  108. data/lib/baza/mysql_base_driver.rb +7 -7
  109. data/lib/baza/query_buffer.rb +20 -19
  110. data/lib/baza/row.rb +16 -16
  111. data/lib/baza/sql_queries.rb +3 -0
  112. data/lib/baza/sql_queries/generic_insert.rb +81 -0
  113. data/lib/baza/sql_queries/generic_update.rb +31 -0
  114. data/lib/baza/sql_queries/mysql_upsert.rb +52 -0
  115. data/lib/baza/sql_queries/mysql_upsert_duplicate_key.rb +57 -0
  116. data/lib/baza/sql_queries/non_atomic_upsert.rb +25 -0
  117. data/lib/baza/sql_queries/postgres_upsert_duplicate_key.rb +118 -0
  118. data/lib/baza/sql_queries/select.rb +170 -0
  119. data/lib/baza/sql_queries/sqlite_upsert_duplicate_key.rb +99 -0
  120. data/lib/baza/table.rb +35 -8
  121. data/spec/active_record/models/user.rb +3 -0
  122. data/spec/{cloner_spec.rb → baza/cloner_spec.rb} +0 -0
  123. data/spec/drivers/active_record_mysql2_spec.rb +5 -3
  124. data/spec/drivers/active_record_mysql_spec.rb +2 -1
  125. data/spec/drivers/active_record_pg_spec.rb +20 -0
  126. data/spec/drivers/active_record_sqlite3_spec.rb +2 -1
  127. data/spec/drivers/mysql2_spec.rb +1 -1
  128. data/spec/drivers/mysql_spec.rb +10 -10
  129. data/spec/drivers/pg_spec.rb +18 -0
  130. data/spec/drivers/sqlite3_spec.rb +7 -8
  131. data/spec/info_active_record_example.rb +1 -1
  132. data/spec/{info_active_record_mysql2.rb → info_active_record_mysql2_example.rb} +3 -2
  133. data/spec/info_active_record_mysql2_travis.rb +35 -0
  134. data/spec/{info_active_record_mysql.rb → info_active_record_mysql_example.rb} +5 -4
  135. data/spec/info_active_record_mysql_travis.rb +36 -0
  136. data/spec/info_active_record_pg_example.rb +36 -0
  137. data/spec/info_active_record_pg_travis.rb +34 -0
  138. data/spec/info_active_record_sqlite3.rb +1 -1
  139. data/spec/info_mysql2_example.rb +1 -3
  140. data/spec/{info_mysql2_shippable.rb → info_mysql2_travis.rb} +2 -4
  141. data/spec/info_mysql_example.rb +1 -3
  142. data/spec/{info_mysql_shippable.rb → info_mysql_travis.rb} +2 -4
  143. data/spec/info_pg_example.rb +22 -0
  144. data/spec/info_pg_travis.rb +20 -0
  145. data/spec/info_sqlite3.rb +1 -3
  146. data/spec/spec_helper.rb +1 -1
  147. data/spec/support/driver_active_record_collection.rb +62 -0
  148. data/spec/support/driver_collection.rb +136 -121
  149. data/spec/support/driver_columns_collection.rb +19 -10
  150. data/spec/support/driver_databases_collection.rb +23 -1
  151. data/spec/support/driver_indexes_collection.rb +2 -2
  152. data/spec/support/driver_tables_collection.rb +24 -4
  153. data/spec/support/driver_users_collection.rb +53 -0
  154. metadata +185 -104
  155. data/lib/baza/drivers/mysql/database.rb +0 -28
  156. data/lib/baza/drivers/mysql/databases.rb +0 -35
  157. data/lib/baza/drivers/mysql_java/database.rb +0 -2
  158. data/lib/baza/drivers/mysql_java/databases.rb +0 -2
  159. data/lib/baza/model.rb +0 -875
  160. data/lib/baza/model_custom.rb +0 -155
  161. data/lib/baza/model_handler.rb +0 -910
  162. data/lib/baza/model_handler_sqlhelper.rb +0 -484
  163. data/lib/baza/revision.rb +0 -383
  164. data/shippable.yml +0 -17
  165. data/spec/info_active_record_mysql2_shippable.rb +0 -34
  166. data/spec/info_active_record_mysql_shippable.rb +0 -34
  167. data/spec/model_handler_spec.rb +0 -431
@@ -0,0 +1,2 @@
1
+ class Baza::Driver::Sqlite3Java::Commands < Baza::Driver::Sqlite3::Commands
2
+ end
@@ -1,15 +1,14 @@
1
1
  class Baza::Driver::Sqlite3Java::UnbufferedResult < Baza::ResultBase
2
2
  def initialize(_driver, result_set)
3
3
  @result_set = result_set
4
+ return unless @result_set
4
5
 
5
- if @result_set
6
- metadata = @result_set.meta_data
7
- @columns_count = metadata.column_count
6
+ metadata = @result_set.meta_data
7
+ @columns_count = metadata.column_count
8
8
 
9
- @columns = []
10
- 1.upto(@columns_count) do |count|
11
- @columns << metadata.column_name(count).to_sym
12
- end
9
+ @columns = []
10
+ 1.upto(@columns_count) do |count|
11
+ @columns << metadata.column_name(count).to_sym
13
12
  end
14
13
  end
15
14
 
@@ -26,8 +25,14 @@ class Baza::Driver::Sqlite3Java::UnbufferedResult < Baza::ResultBase
26
25
  end
27
26
 
28
27
  def each
29
- while data = fetch
30
- yield data
28
+ loop do
29
+ data = fetch
30
+
31
+ if data
32
+ yield data
33
+ else
34
+ break
35
+ end
31
36
  end
32
37
  end
33
38
  end
@@ -1,18 +1,6 @@
1
1
  # This class handels SQLite3-specific behaviour.
2
2
  class Baza::Driver::Sqlite3Rhodes < Baza::BaseSqlDriver
3
- path = "#{File.dirname(__FILE__)}/sqlite3_rhodes"
4
-
5
- autoload :Database, "#{path}/database"
6
- autoload :Databases, "#{path}/databases"
7
- autoload :Table, "#{path}/table"
8
- autoload :Tables, "#{path}/tables"
9
- autoload :Column, "#{path}/column"
10
- autoload :Columns, "#{path}/columns"
11
- autoload :Index, "#{path}/index"
12
- autoload :Indexes, "#{path}/indexes"
13
- autoload :Result, "#{path}/result"
14
- autoload :Sqlspecs, "#{path}/sqlspecs"
15
- autoload :UnbufferedResult, "#{path}/unbuffered_result"
3
+ AutoAutoloader.autoload_sub_classes(self, __FILE__)
16
4
 
17
5
  attr_reader :mutex_statement_reader
18
6
 
@@ -30,14 +18,14 @@ class Baza::Driver::Sqlite3Rhodes < Baza::BaseSqlDriver
30
18
  end
31
19
 
32
20
  # Constructor. This should not be called manually.
33
- def initialize(baza_db)
21
+ def initialize(db)
34
22
  super
35
23
 
36
- @path = @baza.opts[:path] if @baza.opts[:path]
24
+ @path = @db.opts[:path] if @db.opts[:path]
37
25
  @mutex_statement_reader = Mutex.new
38
26
 
39
- if @baza.opts[:conn]
40
- @conn = @baza.opts[:conn]
27
+ if @db.opts[:conn]
28
+ @conn = @db.opts[:conn]
41
29
  else
42
30
  raise "No path was given." unless @path
43
31
  @conn = ::SQLite3::Database.new(@path, @path)
@@ -60,12 +48,6 @@ class Baza::Driver::Sqlite3Rhodes < Baza::BaseSqlDriver
60
48
  string.to_s.gsub(/'/, "''")
61
49
  end
62
50
 
63
- # Returns the last inserted ID.
64
- def last_id
65
- return @conn.last_insert_row_id if @conn.respond_to?(:last_insert_row_id)
66
- query("SELECT last_insert_rowid() AS id").fetch[:id].to_i
67
- end
68
-
69
51
  # Closes the connection to the database.
70
52
  def close
71
53
  @mutex_statement_reader.synchronize do
@@ -75,6 +57,6 @@ class Baza::Driver::Sqlite3Rhodes < Baza::BaseSqlDriver
75
57
 
76
58
  # Starts a transaction, yields the database and commits.
77
59
  def transaction
78
- @conn.transaction { yield @baza }
60
+ @conn.transaction { yield @db }
79
61
  end
80
62
  end
@@ -2,7 +2,9 @@ class Baza::Errors
2
2
  class DatabaseNotFound < RuntimeError; end
3
3
  class ColumnNotFound < RuntimeError; end
4
4
  class IndexNotFound < RuntimeError; end
5
+ class UserNotFound < RuntimeError; end
5
6
  class NotImplemented < RuntimeError; end
6
7
  class Retry < RuntimeError; end
7
8
  class TableNotFound < RuntimeError; end
9
+ class RowNotFound < RuntimeError; end
8
10
  end
@@ -12,11 +12,12 @@ class Baza::Idquery
12
12
  # end
13
13
  def initialize(args, &block)
14
14
  @args = args
15
+ @db = args.fetch(:db)
15
16
  @ids = []
16
17
  @debug = @args[:debug]
17
18
 
18
19
  if @args[:query]
19
- @args[:db].q(@args[:query]) do |data|
20
+ @db.q(@args.fetch(:query)) do |data|
20
21
  @args[:col] = data.keys.first unless @args[:col]
21
22
 
22
23
  if data.is_a?(Array)
@@ -69,8 +70,14 @@ class Baza::Idquery
69
70
  # print "Name: #{data[:name]}\n"
70
71
  # end
71
72
  def each
72
- while data = fetch
73
- yield(data)
73
+ loop do
74
+ data = fetch
75
+
76
+ if data
77
+ yield data
78
+ else
79
+ break
80
+ end
74
81
  end
75
82
  end
76
83
 
@@ -78,8 +85,8 @@ private
78
85
 
79
86
  # Spawns a new database-result to read from.
80
87
  def new_res
81
- table_esc = "`#{@args[:db].escape_table(@args[:table])}`"
82
- col_esc = "`#{@args[:db].escape_column(@args[:col])}`"
88
+ table_esc = "#{@db.sep_table}#{@db.escape_table(@args[:table])}#{@db.sep_table}"
89
+ col_esc = "#{@db.sep_col}#{@db.escape_column(@args[:col])}#{@db.sep_col}"
83
90
  ids = @ids.shift(@args[:size])
84
91
 
85
92
  if ids.empty?
@@ -87,11 +94,11 @@ private
87
94
  return nil
88
95
  end
89
96
 
90
- ids_sql = ids.map { |id| "'#{@args[:db].esc(id)}'" }.join(",")
97
+ ids_sql = ids.map { |id| "#{@db.sep_val}#{@db.esc(id)}#{@db.sep_val}" }.join(",")
91
98
  query_str = "SELECT * FROM #{table_esc} WHERE #{table_esc}.#{col_esc} IN (#{ids_sql})"
92
- print "Query: #{query_str}\n" if @debug
99
+ puts "Query: #{query_str}" if @debug
93
100
 
94
- @args[:db].q(query_str)
101
+ @db.q(query_str)
95
102
  end
96
103
 
97
104
  # Removes all variables on the object. This is done when no more results are available.
@@ -5,6 +5,13 @@ class Baza::Index
5
5
  "#<#{self.class.name} name: \"#{name}\" unique=\"#{unique?}\" columns: #{@columns}>"
6
6
  end
7
7
 
8
+ def data
9
+ {
10
+ name: name,
11
+ columns: columns
12
+ }
13
+ end
14
+
8
15
  def inspect
9
16
  to_s
10
17
  end
@@ -1,19 +1,7 @@
1
1
  class Baza::JdbcDriver < Baza::BaseSqlDriver
2
- path = "#{File.dirname(__FILE__)}/mysql_java"
3
-
4
- autoload :Table, "#{path}/table"
5
- autoload :Tables, "#{path}/tables"
6
- autoload :Column, "#{path}/column"
7
- autoload :Columns, "#{path}/columns"
8
- autoload :Index, "#{path}/index"
9
- autoload :Indexes, "#{path}/indexes"
10
- autoload :Result, "#{path}/result"
11
- autoload :UnbufferedResult, "#{path}/unbuffered_result"
12
- autoload :Sqlspecs, "#{path}/sqlspecs"
13
-
14
2
  attr_reader :conn, :conns
15
3
 
16
- def initialize(baza)
4
+ def initialize(db)
17
5
  @java_rs_data = {}
18
6
  @mutex = ::Mutex.new
19
7
  super
@@ -41,7 +29,7 @@ class Baza::JdbcDriver < Baza::BaseSqlDriver
41
29
  query_with_statement(str, false) do
42
30
  stmt = @conn.create_statement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY)
43
31
 
44
- if @baza.opts[:type] == :sqlite3_java
32
+ if @db.opts[:type] == :sqlite3_java
45
33
  stmt.fetch_size = 1
46
34
  else
47
35
  stmt.fetch_size = java.lang.Integer::MIN_VALUE
@@ -61,10 +49,10 @@ private
61
49
  def query_with_statement(sql, preload_results)
62
50
  @mutex.synchronize do
63
51
  begin
64
- if sql.match(/^\s*(delete|update|create|drop|insert\s+into|alter|truncate)\s+/i)
52
+ if sql =~ /^\s*(delete|update|create|drop|insert\s+into|alter|truncate)\s+/i
65
53
  return query_no_result_set(sql)
66
54
  else
67
- stmt = yield stmt
55
+ stmt = yield
68
56
 
69
57
  result_set = stmt.execute_query(sql)
70
58
  result = Baza::JdbcResult.new(self, stmt, result_set, preload_results)
@@ -1,17 +1,17 @@
1
1
  # This class controls the result for the Java-MySQL-driver.
2
2
  class Baza::JdbcResult < Baza::ResultBase
3
- INT_TYPES = {-6 => true, -5 => true, 4 => true, 5 => true}
4
- FLOAT_TYPES = {2 => true, 3 => true, 7 => true, 8 => true}
5
- TIME_TYPES = {93 => true}
6
- DATE_TYPES = {91 => true}
7
- STRING_TYPES = {-1 => true, 1 => true, 12 => true}
8
- NIL_TYPES = {0 => true}
3
+ INT_TYPES = {-6 => true, -5 => true, 4 => true, 5 => true}.freeze
4
+ FLOAT_TYPES = {2 => true, 3 => true, 7 => true, 8 => true}.freeze
5
+ TIME_TYPES = {93 => true}.freeze
6
+ DATE_TYPES = {91 => true}.freeze
7
+ STRING_TYPES = {-1 => true, 1 => true, 12 => true}.freeze
8
+ NIL_TYPES = {0 => true}.freeze
9
9
 
10
10
  # Constructor. This should not be called manually.
11
11
  def initialize(driver, stmt, result_set, preload_results)
12
12
  @result_set = result_set
13
13
  @stmt = stmt
14
- @type_translation = driver.baza.opts[:type_translation]
14
+ @type_translation = driver.db.opts[:type_translation]
15
15
  @rows = []
16
16
  @index = -1
17
17
  read_results if preload_results
@@ -20,15 +20,21 @@ class Baza::JdbcResult < Baza::ResultBase
20
20
  def fetch
21
21
  if @read_results
22
22
  return false if @rows.empty?
23
- row = @rows.shift
23
+ @rows.shift
24
24
  else
25
- return read_row
25
+ read_row
26
26
  end
27
27
  end
28
28
 
29
29
  def each
30
- while data = fetch
31
- yield data
30
+ loop do
31
+ data = fetch
32
+
33
+ if data
34
+ yield data
35
+ else
36
+ break
37
+ end
32
38
  end
33
39
  end
34
40
 
@@ -61,7 +67,9 @@ private
61
67
  @read_results = true
62
68
 
63
69
  loop do
64
- if row = read_row
70
+ row = read_row
71
+
72
+ if row
65
73
  @rows << row
66
74
  else
67
75
  break
@@ -22,7 +22,7 @@ class Baza::MysqlBaseDriver < Baza::BaseSqlDriver
22
22
  end
23
23
 
24
24
  # Inserts multiple rows in a table. Can return the inserted IDs if asked to in arguments.
25
- def insert_multi(tablename, arr_hashes, args = nil)
25
+ def insert_multi(tablename, arr_hashes, args = {})
26
26
  sql = "INSERT INTO `#{tablename}` ("
27
27
 
28
28
  first = true
@@ -59,7 +59,7 @@ class Baza::MysqlBaseDriver < Baza::BaseSqlDriver
59
59
  sql << ","
60
60
  end
61
61
 
62
- sql << @baza.sqlval(val)
62
+ sql << @db.sqlval(val)
63
63
  end
64
64
  else
65
65
  hash.each do |_key, val|
@@ -69,7 +69,7 @@ class Baza::MysqlBaseDriver < Baza::BaseSqlDriver
69
69
  sql << ","
70
70
  end
71
71
 
72
- sql << @baza.sqlval(val)
72
+ sql << @db.sqlval(val)
73
73
  end
74
74
  end
75
75
  end
@@ -99,13 +99,13 @@ class Baza::MysqlBaseDriver < Baza::BaseSqlDriver
99
99
  end
100
100
 
101
101
  def transaction
102
- @baza.q("START TRANSACTION")
102
+ @db.q("START TRANSACTION")
103
103
 
104
104
  begin
105
- yield @baza
106
- @baza.q("COMMIT")
105
+ yield @db
106
+ @db.q("COMMIT")
107
107
  rescue
108
- @baza.q("ROLLBACK")
108
+ @db.q("ROLLBACK")
109
109
  raise
110
110
  end
111
111
  end
@@ -2,10 +2,11 @@
2
2
  class Baza::QueryBuffer
3
3
  attr_reader :thread_async
4
4
 
5
- INITIALIZE_ARGS_ALLOWED = [:db, :debug, :flush_async]
5
+ INITIALIZE_ARGS_ALLOWED = [:db, :debug, :flush_async].freeze
6
6
  # Constructor. Takes arguments to be used and a block.
7
7
  def initialize(args)
8
8
  @args = args
9
+ @db = args.fetch(:db)
9
10
  @queries = []
10
11
  @inserts = {}
11
12
  @queries_count = 0
@@ -14,19 +15,12 @@ class Baza::QueryBuffer
14
15
 
15
16
  STDOUT.puts "Query buffer started." if @debug
16
17
 
17
- if block_given?
18
- if @args[:flush_async]
19
- @args[:db].clone_conn do |db_flush_async|
20
- @db_flush_async = db_flush_async
18
+ return unless block_given?
19
+
20
+ if @args[:flush_async]
21
+ @db.clone_conn do |db_flush_async|
22
+ @db_flush_async = db_flush_async
21
23
 
22
- begin
23
- yield(self)
24
- ensure
25
- flush
26
- thread_async_join
27
- end
28
- end
29
- else
30
24
  begin
31
25
  yield(self)
32
26
  ensure
@@ -34,6 +28,13 @@ class Baza::QueryBuffer
34
28
  thread_async_join
35
29
  end
36
30
  end
31
+ else
32
+ begin
33
+ yield(self)
34
+ ensure
35
+ flush
36
+ thread_async_join
37
+ end
37
38
  end
38
39
  end
39
40
 
@@ -54,7 +55,7 @@ class Baza::QueryBuffer
54
55
  # buffer.delete(:users, {:id => 5})
55
56
  def delete(table, where)
56
57
  STDOUT.puts "Delete called on table #{table} with arguments: '#{where}'." if @debug
57
- query(@args[:db].delete(table, where, return_sql: true))
58
+ query(@db.delete(table, where, return_sql: true))
58
59
  nil
59
60
  end
60
61
 
@@ -63,7 +64,7 @@ class Baza::QueryBuffer
63
64
  # buffer.update(:users, {:name => "Kasper"}, {:id => 5})
64
65
  def update(table, update, terms)
65
66
  STDOUT.puts "Update called on table #{table}." if @debug
66
- query(@args[:db].update(table, update, terms, return_sql: true))
67
+ query(@db.update(table, update, terms, return_sql: true))
67
68
  nil
68
69
  end
69
70
 
@@ -71,7 +72,7 @@ class Baza::QueryBuffer
71
72
  #===Example
72
73
  # buffer.upsert(:users, {:id => 5}, {:name => "Kasper"})
73
74
  def upsert(table, data, terms)
74
- @args[:db].upsert(table, data, terms, buffer: self)
75
+ @db.upsert(table, data, terms, buffer: self)
75
76
  nil
76
77
  end
77
78
 
@@ -79,7 +80,7 @@ class Baza::QueryBuffer
79
80
  #===Examples
80
81
  # buffer.insert(:users, {:name => "John Doe"})
81
82
  def insert(table, data)
82
- query(@args[:db].insert(table, data, return_sql: true))
83
+ query(@db.insert(table, data, return_sql: true))
83
84
  nil
84
85
  end
85
86
 
@@ -109,7 +110,7 @@ private
109
110
  end
110
111
 
111
112
  def thread_async_join
112
- if thread = @thread_async
113
+ if (thread = @thread_async)
113
114
  thread.join
114
115
  end
115
116
  end
@@ -117,7 +118,7 @@ private
117
118
  # Flushes the queries for real.
118
119
  def flush_real(db = nil)
119
120
  return nil if @queries_count <= 0
120
- db = @args[:db] if db == nil
121
+ db = @db if db == nil
121
122
 
122
123
  @lock.synchronize do
123
124
  unless @queries.empty?