baza 0.0.14 → 0.0.15

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +58 -13
  3. data/VERSION +1 -1
  4. data/baza.gemspec +15 -3
  5. data/include/db.rb +871 -865
  6. data/include/drivers/mysql/mysql.rb +104 -297
  7. data/include/drivers/mysql/mysql_column.rb +133 -0
  8. data/include/drivers/mysql/mysql_columns.rb +4 -127
  9. data/include/drivers/mysql/mysql_index.rb +76 -0
  10. data/include/drivers/mysql/mysql_indexes.rb +0 -73
  11. data/include/drivers/mysql/mysql_result.rb +42 -0
  12. data/include/drivers/mysql/mysql_result_java.rb +61 -0
  13. data/include/drivers/mysql/mysql_result_mysql2.rb +26 -0
  14. data/include/drivers/mysql/mysql_result_unbuffered.rb +72 -0
  15. data/include/drivers/mysql/mysql_sqlspecs.rb +1 -1
  16. data/include/drivers/mysql/mysql_table.rb +361 -0
  17. data/include/drivers/mysql/mysql_tables.rb +23 -381
  18. data/include/drivers/sqlite3/libknjdb_java_sqlite3.rb +17 -22
  19. data/include/drivers/sqlite3/libknjdb_sqlite3_ironruby.rb +13 -13
  20. data/include/drivers/sqlite3/sqlite3.rb +39 -105
  21. data/include/drivers/sqlite3/sqlite3_column.rb +146 -0
  22. data/include/drivers/sqlite3/sqlite3_columns.rb +17 -149
  23. data/include/drivers/sqlite3/sqlite3_index.rb +55 -0
  24. data/include/drivers/sqlite3/sqlite3_indexes.rb +0 -52
  25. data/include/drivers/sqlite3/sqlite3_result.rb +35 -0
  26. data/include/drivers/sqlite3/sqlite3_result_java.rb +39 -0
  27. data/include/drivers/sqlite3/sqlite3_table.rb +399 -0
  28. data/include/drivers/sqlite3/sqlite3_tables.rb +7 -403
  29. data/include/idquery.rb +19 -19
  30. data/include/model.rb +139 -139
  31. data/include/model_handler_sqlhelper.rb +74 -74
  32. data/spec/support/driver_columns_collection.rb +17 -0
  33. metadata +14 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b59d710af6cacaf585d14ba20a3f269909c1c5c
4
- data.tar.gz: 6788d6b19dd3cac5f820e59e9ba2714269a8630d
3
+ metadata.gz: fd02457700f9360c5cef41f8b101fa297016136e
4
+ data.tar.gz: 66949e26d04439be674b2cdd908c613753c5e26d
5
5
  SHA512:
6
- metadata.gz: 4d0f1a4cf4f7d8f7825753099395983f2d031b2c963f822b8ecbea39badd2d668ef32f20fdd1bd235a8f82048b610a0e0bbdb7d0bb96b2d8a2d3318eb2db5f75
7
- data.tar.gz: 5ba4b78729f00c40b30e60095a133ed6254557f044880ee55aa8d27d3e8a75b89928f07ad3d5bbf0887d852d9b7f03f623610fc8f369daf56a43faca1200cee3
6
+ metadata.gz: 13fdc63c67474ad44f1ba5b029046246d9339a5bfff7cdcdfb9761f3ebff42df0599d85f03409be4ed9e947613565dca672e9e0e679b0d5fbc3bda07f2c4c4cb
7
+ data.tar.gz: 28472e1d5af9ab5763a15f0dd8f3b33761948d167b572f06fa084e17d882eea51c262e3d0acf16cb736fd4824cce2974d2bbd3b7d37c9efffec4ea1cbd009bc7
data/README.md CHANGED
@@ -71,7 +71,7 @@ db.update(:users, {name: "Kasper Johansen"}, {name: "Kasper"})
71
71
 
72
72
  ### Delete
73
73
  ```ruby
74
- db.delete(:users, {name: "Kasper"})
74
+ db.delete(:users, name: "Kasper")
75
75
  ```
76
76
 
77
77
  ### Upsert
@@ -85,11 +85,11 @@ db.upsert(:users, {name: "Kasper"}, {age: 27})
85
85
  ### Table creation
86
86
  ```ruby
87
87
  db.tables.create(:users, {
88
- :columns => [
89
- {:name => :id, :type => :int, :autoincr => true, :primarykey => true},
90
- {:name => :name, :type => :varchar}
88
+ columns: [
89
+ {name: :id, type: :int, autoincr: true, primarykey: true},
90
+ {name: :name, type: :varchar}
91
91
  ],
92
- :indexes => [
92
+ indexes: [
93
93
  :name
94
94
  ]
95
95
  })
@@ -119,6 +119,16 @@ table = db.tables[:users]
119
119
  table.rename(:new_table_name)
120
120
  ```
121
121
 
122
+ ### Table optimizing
123
+ ```ruby
124
+ table.optimize
125
+ ```
126
+
127
+ ### Table rows counting
128
+ ```ruby
129
+ table.rows_count
130
+ ```
131
+
122
132
  ### Column listing
123
133
  ```ruby
124
134
  table = db.tables[:users]
@@ -127,14 +137,47 @@ cols = table.columns
127
137
 
128
138
  Or a specific column:
129
139
  ```ruby
130
- col = table.column(:id)
131
- puts "Column: #{col.name} #{col.type}(#{col.maxlength})"
140
+ column = table.column(:id)
141
+ puts "Column: #{column.name} #{column.type}(#{column.maxlength})"
142
+ puts "Default: #{column.default}"
143
+ ```
144
+
145
+ ### Column altering
146
+ ```ruby
147
+ column.change(name: "newname", type: :varchar, default: "")
148
+ ```
149
+
150
+ ### Drop column
151
+ ```ruby
152
+ column.drop
153
+ ```
154
+
155
+ ### Get an index by name
156
+ ```ruby
157
+ index = table.index("index_name")
158
+ ```
159
+
160
+ ### Rename index
161
+ ```ruby
162
+ index.rename("new name")
163
+ ```
164
+
165
+ ### Dropping an index
166
+ ```ruby
167
+ index.drop
168
+ ```
169
+
170
+ ### Getting various data from an index
171
+ ```ruby
172
+ puts "Unique: #{index.unique?}"
173
+ puts "Primary: #{index.primary?}"
174
+ puts "Table: #{index.table}"
132
175
  ```
133
176
 
134
177
  ## Copying databases
135
178
  ```ruby
136
- db_mysql = Baza::Db.new(:type => :mysql, :subtype => :mysql2, ...)
137
- db_sqlite = Baza::Db.new(:type => :sqlite3, :path => ...)
179
+ db_mysql = Baza::Db.new(type: :mysql, subtype: :mysql2, ...)
180
+ db_sqlite = Baza::Db.new(type: :sqlite3, path: ...)
138
181
 
139
182
  db_mysql.copy_to(db_sqlite)
140
183
  ```
@@ -142,7 +185,7 @@ db_mysql.copy_to(db_sqlite)
142
185
  ## Dumping SQL to an IO
143
186
  ```ruby
144
187
  db = Baza::Db.new(...)
145
- dump = Baza::Dump.new(:db => db)
188
+ dump = Baza::Dump.new(db: db)
146
189
  str_io = StringIO.new
147
190
  dump.dump(str_io)
148
191
  ```
@@ -151,17 +194,19 @@ dump.dump(str_io)
151
194
  ```ruby
152
195
  db.transaction do
153
196
  1000.times do
154
- db.insert(:users, {:name => "Kasper"})
197
+ db.insert(:users, name: "Kasper")
155
198
  end
156
199
  end
157
200
  ```
158
201
 
159
202
  ## Query Buffer
160
- In order to speed things up, but without using transactions directly, you can use a query buffer. This stores various instructions in memory and flushes them every now and then through transactions or intelligent queries (like multi-insertion). The drawback is that it will not be possible to test the queries for errors before a flush is executed and it wont be possible to read results form any of the queries. It is fairly simple do however:
203
+ In order to speed things up, but without using transactions directly, you can use a query buffer. This stores various instructions in memory and flushes them every now and then through transactions or intelligent queries (like multi-insertion). The drawback is that it will not be possible to test the queries for errors before a flush is executed and it wont be possible to read results from any of the queries.
204
+
205
+ It is fairly simple do:
161
206
  ```ruby
162
207
  db.q_buffer do |buffer|
163
208
  100_000.times do |count|
164
- buffer.insert(:table_name, {:name => "Kasper #{count}"})
209
+ buffer.insert(:table_name, name: "Kasper #{count}")
165
210
 
166
211
  buffer.query("UPDATE table SET ...")
167
212
  buffer.query("DELETE FROM table WHERE ...")
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.14
1
+ 0.0.15
data/baza.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: baza 0.0.14 ruby lib
5
+ # stub: baza 0.0.15 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "baza"
9
- s.version = "0.0.14"
9
+ s.version = "0.0.15"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Kasper Johansen"]
14
- s.date = "2014-10-15"
14
+ s.date = "2015-03-17"
15
15
  s.description = "A database abstraction layer, model framework and database framework."
16
16
  s.email = "kj@gfish.com"
17
17
  s.extra_rdoc_files = [
@@ -33,16 +33,28 @@ Gem::Specification.new do |s|
33
33
  "include/driver.rb",
34
34
  "include/drivers/active_record/active_record.rb",
35
35
  "include/drivers/mysql/mysql.rb",
36
+ "include/drivers/mysql/mysql_column.rb",
36
37
  "include/drivers/mysql/mysql_columns.rb",
38
+ "include/drivers/mysql/mysql_index.rb",
37
39
  "include/drivers/mysql/mysql_indexes.rb",
40
+ "include/drivers/mysql/mysql_result.rb",
41
+ "include/drivers/mysql/mysql_result_java.rb",
42
+ "include/drivers/mysql/mysql_result_mysql2.rb",
43
+ "include/drivers/mysql/mysql_result_unbuffered.rb",
38
44
  "include/drivers/mysql/mysql_sqlspecs.rb",
45
+ "include/drivers/mysql/mysql_table.rb",
39
46
  "include/drivers/mysql/mysql_tables.rb",
40
47
  "include/drivers/sqlite3/libknjdb_java_sqlite3.rb",
41
48
  "include/drivers/sqlite3/libknjdb_sqlite3_ironruby.rb",
42
49
  "include/drivers/sqlite3/sqlite3.rb",
50
+ "include/drivers/sqlite3/sqlite3_column.rb",
43
51
  "include/drivers/sqlite3/sqlite3_columns.rb",
52
+ "include/drivers/sqlite3/sqlite3_index.rb",
44
53
  "include/drivers/sqlite3/sqlite3_indexes.rb",
54
+ "include/drivers/sqlite3/sqlite3_result.rb",
55
+ "include/drivers/sqlite3/sqlite3_result_java.rb",
45
56
  "include/drivers/sqlite3/sqlite3_sqlspecs.rb",
57
+ "include/drivers/sqlite3/sqlite3_table.rb",
46
58
  "include/drivers/sqlite3/sqlite3_tables.rb",
47
59
  "include/dump.rb",
48
60
  "include/idquery.rb",