baza 0.0.20 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
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,35 @@
1
+ class Baza::Driver::Pg::Index < Baza::Index
2
+ attr_reader :name
3
+
4
+ def initialize(args)
5
+ @db = args.fetch(:db)
6
+ @data = args.fetch(:data)
7
+ @name = @data.fetch(:indexname)
8
+ end
9
+
10
+ def table
11
+ @db.tables[table_name]
12
+ end
13
+
14
+ def table_name
15
+ @data.fetch(:tablename)
16
+ end
17
+
18
+ def unique?
19
+ @data.fetch(:indexdef).include?(" UNIQUE ")
20
+ end
21
+
22
+ def primary?
23
+ name == "#{table_name}_pkey"
24
+ end
25
+
26
+ def rename(new_name)
27
+ @db.query("ALTER INDEX #{@db.sep_index}#{@db.escape_index(name)}#{@db.sep_index} RENAME TO #{@db.sep_index}#{@db.escape_index(new_name)}#{@db.sep_index}")
28
+ @name = new_name.to_s
29
+ self
30
+ end
31
+
32
+ def columns
33
+ @data.fetch(:indexdef).match(/\((.+)\)\Z/)[1].split(/\s*,\s/)
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ class Baza::Driver::Pg::Indexes
2
+ def initialize(args)
3
+ @db = args.fetch(:db)
4
+ end
5
+ end
@@ -0,0 +1,139 @@
1
+ class Baza::Driver::Pg::Result
2
+ def initialize(driver, result, args = nil)
3
+ @result = result
4
+ @unbuffered = true if args && args[:unbuffered]
5
+ @type_translation = driver.db.opts[:type_translation]
6
+
7
+ types
8
+ end
9
+
10
+ def to_enum
11
+ @enum ||= Enumerator.new do |yielder|
12
+ if @unbuffered
13
+ @result.stream_each_row do |values|
14
+ if @type_translation == :string
15
+ values = translate_values_to_strings(values)
16
+ elsif @type_translation
17
+ values = translate_values_with_types(values)
18
+ end
19
+
20
+ result_sym = Hash[*keys.zip(values).flatten]
21
+ yielder << result_sym
22
+ end
23
+ else
24
+ @result.each do |result|
25
+ values = result.values
26
+
27
+ if @type_translation == :string
28
+ values = translate_values_to_strings(values)
29
+ elsif @type_translation
30
+ values = translate_values_with_types(values)
31
+ end
32
+
33
+ result_sym = Hash[*keys.zip(values).flatten]
34
+ yielder << result_sym
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def to_a_enum
41
+ ArrayEnumerator.new(to_enum)
42
+ end
43
+
44
+ def fetch
45
+ to_enum.next
46
+ rescue StopIteration
47
+ nil
48
+ end
49
+
50
+ def each(&blk)
51
+ to_enum.each(&blk)
52
+ rescue StopIteration
53
+ nil
54
+ end
55
+
56
+ def to_a
57
+ array = []
58
+ each do |result|
59
+ array << result
60
+ end
61
+
62
+ array
63
+ end
64
+
65
+ private
66
+
67
+ def keys
68
+ unless @keys
69
+ @keys = []
70
+ @result.fields.each do |field|
71
+ @keys << field.to_sym
72
+ end
73
+ end
74
+
75
+ @keys
76
+ end
77
+
78
+ def types
79
+ unless @types
80
+ @types = []
81
+ @result.fields.length.times do |count|
82
+ type_num = @result.ftype(count)
83
+
84
+ case type_num
85
+ when 20, 23
86
+ @types << :int
87
+ when 16, 19, 25, 26, 28, 1034, 1043
88
+ @types << :string
89
+ when 701
90
+ @types << :float
91
+ when 1114
92
+ @types << :time
93
+ when 1082
94
+ @types << :date
95
+ else
96
+ if @debug
97
+ data = nil
98
+ @result.each do |data_i|
99
+ data = data_i
100
+ break
101
+ end
102
+
103
+ value = data.values[count] if data
104
+
105
+ raise "Unknown type number: #{type_num} for this field: #{@result.fields[count]}: #{value}"
106
+ else
107
+ @types << :string
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ @types
114
+ end
115
+
116
+ def translate_values_with_types(values)
117
+ values.collect!.with_index do |value, count|
118
+ type_sym = types[count]
119
+
120
+ if type_sym == :int
121
+ value.to_i
122
+ elsif type_sym == :float
123
+ value.to_f
124
+ elsif type_sym == :time
125
+ Time.parse(value)
126
+ elsif type_sym == :date
127
+ Date.parse(value)
128
+ elsif type_sym == :string
129
+ value
130
+ else
131
+ raise "Unknown type symbol: #{type_sym}"
132
+ end
133
+ end
134
+ end
135
+
136
+ def translate_values_to_strings(values)
137
+ values.map!(&:to_s)
138
+ end
139
+ end
@@ -0,0 +1,184 @@
1
+ class Baza::Driver::Pg::Table < Baza::Table
2
+ attr_reader :name
3
+
4
+ def initialize(args)
5
+ @db = args.fetch(:driver).db
6
+ @data = args.fetch(:data)
7
+ @name = @data.fetch(:table_name)
8
+ end
9
+
10
+ def drop
11
+ @db.with_database(database_name) do
12
+ @db.query("DROP TABLE \"#{@db.escape_table(name)}\"")
13
+ end
14
+ end
15
+
16
+ def database_name
17
+ @data.fetch(:table_catalog)
18
+ end
19
+
20
+ def native?
21
+ false
22
+ end
23
+
24
+ def columns(args = {})
25
+ where_args = {
26
+ table_catalog: @db.opts[:db],
27
+ table_name: name,
28
+ table_schema: "public"
29
+ }
30
+
31
+ where_args[:column_name] = args.fetch(:name) if args[:name]
32
+
33
+ columns_list = [] unless block_given?
34
+ @db.select([:information_schema, :columns], where_args) do |column_data|
35
+ column = Baza::Driver::Pg::Column.new(
36
+ db: @db,
37
+ data: column_data
38
+ )
39
+
40
+ if columns_list
41
+ columns_list << column
42
+ else
43
+ yield column
44
+ end
45
+ end
46
+
47
+ columns_list
48
+ end
49
+
50
+ def column(name)
51
+ column = columns(name: name).first
52
+ raise Baza::Errors::ColumnNotFound unless column
53
+ column
54
+ end
55
+
56
+ def truncate
57
+ @db.query("TRUNCATE #{@db.sep_table}#{@db.escape_table(name)}#{@db.sep_table} RESTART IDENTITY")
58
+ self
59
+ end
60
+
61
+ def indexes(args = {})
62
+ where_args = {
63
+ tablename: name
64
+ }
65
+
66
+ where_args[:indexname] = args.fetch(:name) if args[:name]
67
+
68
+ indexes_list = [] unless block_given?
69
+ @db.select(:pg_indexes, where_args) do |index_data|
70
+ index = Baza::Driver::Pg::Index.new(
71
+ db: @db,
72
+ data: index_data
73
+ )
74
+
75
+ next if index.primary?
76
+
77
+ if indexes_list
78
+ indexes_list << index
79
+ else
80
+ yield index
81
+ end
82
+ end
83
+
84
+ indexes_list
85
+ end
86
+
87
+ def index(name)
88
+ index = indexes(name: name).first
89
+ raise Baza::Errors::IndexNotFound unless index
90
+ index
91
+ end
92
+
93
+ def create_indexes(index_list, args = {})
94
+ Baza::Driver::Pg::Table.create_indexes(index_list, args.merge(table_name: name, db: @db))
95
+ end
96
+
97
+ def self.create_indexes(index_list, args = {})
98
+ db = args.fetch(:db)
99
+ sqls = Baza::Driver::Pg::CreateIndexSqlCreator.new(db: db, indexes: index_list, create_args: args).sqls
100
+
101
+ unless args[:return_sql]
102
+ db.transaction do
103
+ sqls.each do |sql|
104
+ db.query(sql)
105
+ end
106
+ end
107
+ end
108
+
109
+ sqls if args[:return_sql]
110
+ end
111
+
112
+ def rename(new_name)
113
+ @db.query("ALTER TABLE #{@db.sep_table}#{@db.escape_table(name)}#{@db.sep_table} RENAME TO #{@db.sep_table}#{@db.escape_table(new_name)}#{@db.sep_table}")
114
+ @name = new_name.to_s
115
+ self
116
+ end
117
+
118
+ def reload
119
+ where_args = {
120
+ table_catalog: @db.opts.fetch(:db),
121
+ table_schema: "public",
122
+ table_name: name
123
+ }
124
+
125
+ data = @db.single([:information_schema, :tables], where_args)
126
+ raise Baza::Errors::TableNotFound unless data
127
+ @data = data
128
+ self
129
+ end
130
+
131
+ def optimize
132
+ @db.query("VACUUM #{@db.sep_table}#{@db.escape_table(name)}#{@db.sep_table}")
133
+ self
134
+ end
135
+
136
+ def clone(newname, _args = {})
137
+ raise "Invalid name." if newname.to_s.strip.empty?
138
+
139
+ columns_list = []
140
+ indexes_list = []
141
+
142
+ columns do |column|
143
+ columns_list << column.data
144
+ end
145
+
146
+ indexes do |index|
147
+ data = index.data
148
+ data.delete(:name)
149
+ indexes_list << data
150
+ end
151
+
152
+ @db.tables.create(newname, columns: columns_list, indexes: indexes_list)
153
+
154
+ clone_insert_from_original_table(newname, columns_list)
155
+
156
+ @db.tables[newname]
157
+ end
158
+
159
+ private
160
+
161
+ def clone_insert_from_original_table(newname, columns_list)
162
+ sql_clone = "INSERT INTO #{@db.sep_table}#{@db.escape_table(newname)}#{@db.sep_table} ("
163
+
164
+ first = true
165
+ columns_list.each do |column_data|
166
+ sql_clone << "," unless first
167
+ first = false if first
168
+ sql_clone << "#{@db.sep_col}#{@db.escape_column(column_data.fetch(:name))}#{@db.sep_col}"
169
+ end
170
+
171
+ sql_clone << ") SELECT "
172
+
173
+ first = true
174
+ columns_list.each do |column_data|
175
+ sql_clone << "," unless first
176
+ first = false if first
177
+ sql_clone << "#{@db.sep_col}#{@db.escape_column(column_data.fetch(:name))}#{@db.sep_col}"
178
+ end
179
+
180
+ sql_clone << " FROM #{@db.sep_table}#{@db.escape_table(name)}#{@db.sep_table}"
181
+
182
+ @db.query(sql_clone)
183
+ end
184
+ end
@@ -0,0 +1,45 @@
1
+ class Baza::Driver::Pg::Tables
2
+ attr_reader :db
3
+
4
+ def initialize(args)
5
+ @args = args
6
+ @db = @args.fetch(:db)
7
+ end
8
+
9
+ def [](table_name)
10
+ table = list(name: table_name).first
11
+ raise Baza::Errors::TableNotFound unless table
12
+ table
13
+ end
14
+
15
+ def list(args = {})
16
+ tables_list = [] unless block_given?
17
+
18
+ where_args = {
19
+ table_catalog: @db.opts[:db],
20
+ table_schema: "public"
21
+ }
22
+ where_args[:table_name] = args.fetch(:name) if args[:name]
23
+
24
+ @db.select([:information_schema, :tables], where_args, orderby: :table_name) do |table_data|
25
+ table = Baza::Driver::Pg::Table.new(
26
+ driver: @db.driver,
27
+ data: table_data
28
+ )
29
+
30
+ next if table.native?
31
+
32
+ if tables_list
33
+ tables_list << table
34
+ else
35
+ yield table
36
+ end
37
+ end
38
+
39
+ tables_list
40
+ end
41
+
42
+ def create(name, data, args = nil)
43
+ @db.current_database.create_table(name, data, args)
44
+ end
45
+ end
@@ -1,18 +1,6 @@
1
1
  # This class handels SQLite3-specific behaviour.
2
2
  class Baza::Driver::Sqlite3 < Baza::BaseSqlDriver
3
- path = "#{File.dirname(__FILE__)}/sqlite3"
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
 
@@ -37,14 +25,14 @@ class Baza::Driver::Sqlite3 < Baza::BaseSqlDriver
37
25
  end
38
26
 
39
27
  # Constructor. This should not be called manually.
40
- def initialize(baza_db)
28
+ def initialize(db)
41
29
  super
42
30
 
43
- @path = @baza.opts[:path] if @baza.opts[:path]
31
+ @path = @db.opts[:path] if @db.opts[:path]
44
32
  @mutex_statement_reader = Mutex.new
45
33
 
46
- if @baza.opts[:conn]
47
- @conn = @baza.opts[:conn]
34
+ if @db.opts[:conn]
35
+ @conn = @db.opts[:conn]
48
36
  else
49
37
  raise "No path was given." unless @path
50
38
  require "sqlite3" unless ::Object.const_defined?(:SQLite3)
@@ -72,12 +60,6 @@ class Baza::Driver::Sqlite3 < Baza::BaseSqlDriver
72
60
  string.to_s.gsub(/'/, "''")
73
61
  end
74
62
 
75
- # Returns the last inserted ID.
76
- def last_id
77
- return @conn.last_insert_row_id if @conn.respond_to?(:last_insert_row_id)
78
- query("SELECT last_insert_rowid() AS id").fetch[:id].to_i
79
- end
80
-
81
63
  # Closes the connection to the database.
82
64
  def close
83
65
  @mutex_statement_reader.synchronize { @conn.close }
@@ -85,7 +67,7 @@ class Baza::Driver::Sqlite3 < Baza::BaseSqlDriver
85
67
 
86
68
  # Starts a transaction, yields the database and commits.
87
69
  def transaction
88
- @conn.transaction { yield @baza }
70
+ @conn.transaction { yield @db }
89
71
  end
90
72
 
91
73
  def supports_multiple_databases?