baza 0.0.15 → 0.0.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ class Baza::Table
2
+ def to_s
3
+ "#<#{self.class.name} name=\"#{name}\">"
4
+ end
5
+
6
+ def inspect
7
+ to_s
8
+ end
9
+ end
@@ -5,7 +5,25 @@ class Baza
5
5
  def self.const_missing(name)
6
6
  file_name = name.to_s.gsub(/(.)([A-Z])/,'\1_\2').downcase
7
7
  require "#{File.dirname(__FILE__)}/../include/#{file_name}.rb"
8
- raise "Still not defined: '#{name}'." if !Baza.const_defined?(name)
8
+ raise "Still not defined: '#{name}'." unless Baza.const_defined?(name)
9
9
  return Baza.const_get(name)
10
10
  end
11
+
12
+ def self.default_db=(db)
13
+ @default_db = db
14
+ end
15
+
16
+ def self.default_db
17
+ unless @default_db
18
+ config_file = "#{Dir.pwd}/config/baza_database.rb"
19
+
20
+ load(config_file)
21
+
22
+ unless @default_db.is_a?(Baza::Db)
23
+ raise "Config file didn't return a Baza::Db: #{@default_db.class.name}"
24
+ end
25
+ end
26
+
27
+ return @default_db
28
+ end
11
29
  end
@@ -1,7 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.2
3
+ - ruby-1.9.3
4
+ - ruby-2.1.2
5
+ - jruby-head
4
6
  before_script:
7
+ - sudo apt-get -f install libmysql-java
5
8
  - cp spec/info_mysql_shippable.rb spec/info_mysql.rb
6
9
  - cp spec/info_active_record_shippable.rb spec/info_active_record.rb
7
10
  - mysql -e 'CREATE DATABASE baza;'
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe Baza::Cloner do
4
+ it 'can clone drivers' do
5
+ require 'info_active_record'
6
+ conn = Baza::InfoActiveRecord.connection
7
+ baza_db = Baza::Cloner.from_active_record_connection(conn[:conn])
8
+ expect(baza_db.query('SELECT 1 AS test').fetch[:test]).to eq 1
9
+ end
10
+ end
@@ -4,14 +4,26 @@ class Baza::InfoActiveRecord
4
4
  def self.connection
5
5
  require "active_record"
6
6
 
7
- @conn_pool ||= ::ActiveRecord::Base.establish_connection(
8
- adapter: "mysql2",
9
- host: "localhost",
10
- database: "baza-test",
11
- username: "baza-test",
12
- password: "BBH7djRUKzL5nmG3"
13
- )
14
- @conn ||= @conn_pool.connection
7
+ if RUBY_ENGINE == "jruby"
8
+ require "/usr/share/java/mysql-connector-java.jar" if File.exists?("/usr/share/java/mysql-connector-java.jar")
9
+ @conn_pool ||= ::ActiveRecord::Base.establish_connection(
10
+ adapter: "mysql",
11
+ host: "localhost",
12
+ database: "baza-test",
13
+ username: "baza-test",
14
+ password: "BBH7djRUKzL5nmG3"
15
+ )
16
+ @conn ||= @conn_pool.connection
17
+ else
18
+ @conn_pool ||= ::ActiveRecord::Base.establish_connection(
19
+ adapter: "mysql2",
20
+ host: "localhost",
21
+ database: "baza-test",
22
+ username: "baza-test",
23
+ password: "BBH7djRUKzL5nmG3"
24
+ )
25
+ @conn ||= @conn_pool.connection
26
+ end
15
27
 
16
28
  return {pool: @conn_pool, conn: @conn}
17
29
  end
@@ -4,13 +4,24 @@ class Baza::InfoActiveRecord
4
4
  def self.connection
5
5
  require "active_record"
6
6
 
7
- @conn_pool ||= ::ActiveRecord::Base.establish_connection(
8
- adapter: "mysql2",
9
- host: "localhost",
10
- database: "baza",
11
- username: "shippa"
12
- )
13
- @conn ||= @conn_pool.connection
7
+ if RUBY_ENGINE == "jruby"
8
+ require "/usr/share/java/mysql-connector-java.jar" if File.exists?("/usr/share/java/mysql-connector-java.jar")
9
+ @conn_pool ||= ::ActiveRecord::Base.establish_connection(
10
+ adapter: "mysql",
11
+ host: "localhost",
12
+ database: "baza",
13
+ username: "shippa"
14
+ )
15
+ @conn ||= @conn_pool.connection
16
+ else
17
+ @conn_pool ||= ::ActiveRecord::Base.establish_connection(
18
+ adapter: "mysql2",
19
+ host: "localhost",
20
+ database: "baza",
21
+ username: "shippa"
22
+ )
23
+ @conn ||= @conn_pool.connection
24
+ end
14
25
 
15
26
  return {pool: @conn_pool, conn: @conn}
16
27
  end
@@ -2,13 +2,22 @@ class Baza::InfoMysql
2
2
  attr_reader :db
3
3
 
4
4
  def initialize
5
- @db = Baza::Db.new(
6
- type: :mysql,
7
- subtype: :mysql2,
8
- host: "localhost",
9
- user: "shippa",
10
- db: "baza"
11
- )
5
+ if RUBY_ENGINE == "jruby"
6
+ @db = Baza::Db.new(
7
+ type: :mysql,
8
+ host: "localhost",
9
+ user: "shippa",
10
+ db: "baza"
11
+ )
12
+ else
13
+ @db = Baza::Db.new(
14
+ type: :mysql,
15
+ subtype: :mysql2,
16
+ host: "localhost",
17
+ user: "shippa",
18
+ db: "baza"
19
+ )
20
+ end
12
21
  end
13
22
 
14
23
  def before
@@ -2,7 +2,7 @@ class Baza::InfoSqlite3
2
2
  attr_reader :db
3
3
 
4
4
  def initialize
5
- require "sqlite3"
5
+ require "sqlite3" unless RUBY_ENGINE == "jruby"
6
6
  require "tmpdir"
7
7
 
8
8
  @path = "#{Dir.tmpdir}/baza_sqlite3_test_#{Time.now.to_f.to_s.hash}.sqlite3"
@@ -12,7 +12,12 @@ shared_examples_for "a baza indexes driver" do
12
12
  db.tables.create("test", {
13
13
  columns: [
14
14
  {name: "id", type: :int, autoincr: true, primarykey: true},
15
- {name: "text", type: :varchar}
15
+ {name: "text", type: :varchar},
16
+ {name: "email", type: :varchar}
17
+ ],
18
+ indexes: [
19
+ :text,
20
+ {name: :email, unique: true, columns: [:email]}
16
21
  ]
17
22
  })
18
23
  db.tables[:test]
@@ -33,7 +38,6 @@ shared_examples_for "a baza indexes driver" do
33
38
 
34
39
  test_table.create_indexes([{name: "index_on_text", columns: [:text]}])
35
40
  test_table.rename("test2")
36
-
37
41
  test_table.index("index_on_text").rename("index_on_text2")
38
42
 
39
43
  table = db.tables[:test2]
@@ -46,4 +50,14 @@ shared_examples_for "a baza indexes driver" do
46
50
  test_table.index("index_that_doesnt_exist")
47
51
  }.to raise_error(Errno::ENOENT)
48
52
  end
53
+
54
+ describe "#unique?" do
55
+ it "returns true when it is unique" do
56
+ test_table.index("email").unique?.should eq true
57
+ end
58
+
59
+ it "returns false when it isn't unique" do
60
+ test_table.index("text").unique?.should eq false
61
+ end
62
+ end
49
63
  end
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baza
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Johansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-17 00:00:00.000000000 Z
11
+ date: 2015-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: datet
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.0.25
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.0.25
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: wref
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.0.8
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.0.8
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: knjrbfw
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.0.111
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.0.111
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: array_enumerator
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.0.7
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.0.7
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: string-cases
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.0.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.0.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -195,6 +195,8 @@ files:
195
195
  - Rakefile
196
196
  - VERSION
197
197
  - baza.gemspec
198
+ - include/cloner.rb
199
+ - include/column.rb
198
200
  - include/db.rb
199
201
  - include/dbtime.rb
200
202
  - include/driver.rb
@@ -211,8 +213,6 @@ files:
211
213
  - include/drivers/mysql/mysql_sqlspecs.rb
212
214
  - include/drivers/mysql/mysql_table.rb
213
215
  - include/drivers/mysql/mysql_tables.rb
214
- - include/drivers/sqlite3/libknjdb_java_sqlite3.rb
215
- - include/drivers/sqlite3/libknjdb_sqlite3_ironruby.rb
216
216
  - include/drivers/sqlite3/sqlite3.rb
217
217
  - include/drivers/sqlite3/sqlite3_column.rb
218
218
  - include/drivers/sqlite3/sqlite3_columns.rb
@@ -225,6 +225,7 @@ files:
225
225
  - include/drivers/sqlite3/sqlite3_tables.rb
226
226
  - include/dump.rb
227
227
  - include/idquery.rb
228
+ - include/index.rb
228
229
  - include/model.rb
229
230
  - include/model_custom.rb
230
231
  - include/model_handler.rb
@@ -233,8 +234,10 @@ files:
233
234
  - include/revision.rb
234
235
  - include/row.rb
235
236
  - include/sqlspecs.rb
237
+ - include/table.rb
236
238
  - lib/baza.rb
237
239
  - shippable.yml
240
+ - spec/include/cloner_spec.rb
238
241
  - spec/include/drivers/active_record_spec.rb
239
242
  - spec/include/drivers/mysql_spec.rb
240
243
  - spec/include/drivers/sqlite3_spec.rb
@@ -270,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
273
  version: '0'
271
274
  requirements: []
272
275
  rubyforge_project:
273
- rubygems_version: 2.4.0
276
+ rubygems_version: 2.2.2
274
277
  signing_key:
275
278
  specification_version: 4
276
279
  summary: A database abstraction layer, model framework and database framework.
@@ -1,78 +0,0 @@
1
- class KnjDB_java_sqlite3
2
- def escape_table
3
- return "`"
4
- end
5
-
6
- def escape_col
7
- return "`"
8
- end
9
-
10
- def escape_val
11
- return "'"
12
- end
13
-
14
- def initialize(baza_db_obj)
15
- @baza_db = baza_db_obj
16
-
17
- if @baza_db.opts[:sqlite_driver]
18
- require @baza_db.opts[:sqlite_driver]
19
- else
20
- require File.dirname(__FILE__) + "/sqlitejdbc-v056.jar"
21
- end
22
-
23
- require "java"
24
- import "org.sqlite.JDBC"
25
- @conn = java.sql.DriverManager::getConnection("jdbc:sqlite:" + @baza_db.opts[:path])
26
- @stat = @conn.createStatement
27
- end
28
-
29
- def query(string)
30
- begin
31
- return KnjDB_java_sqlite3_result.new(@stat.executeQuery(string))
32
- rescue java.sql.SQLException => e
33
- if e.message == "java.sql.SQLException: query does not return ResultSet"
34
- #ignore it.
35
- else
36
- raise e
37
- end
38
- end
39
- end
40
-
41
- def fetch(result)
42
- return result.fetch
43
- end
44
-
45
- def escape(string)
46
- return "" unless string
47
- string = string.gsub("'", "\\'")
48
- return string
49
- end
50
-
51
- def last_id
52
- return @conn.last_insert_row_id
53
- end
54
- end
55
-
56
- class KnjDB_java_sqlite3_result
57
- def initialize(rs)
58
- @rs = rs
59
- @index = 0
60
-
61
- if rs
62
- @metadata = rs.getMetaData
63
- @columns_count = @metadata.getColumnCount
64
- end
65
- end
66
-
67
- def fetch
68
- return false unless @rs.next
69
-
70
- tha_return = {}
71
- for i in (1..@columns_count)
72
- col_name = @metadata.getColumnName(i)
73
- tha_return.store(col_name, @rs.getString(i))
74
- end
75
-
76
- return tha_return
77
- end
78
- end
@@ -1,69 +0,0 @@
1
- require "Mono.Data.Sqlite, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"
2
- require "Mono.Data.SqliteClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"
3
-
4
- class Baza::Driver::Sqlite3_ironruby
5
- def escape_table
6
- return "`"
7
- end
8
-
9
- def escape_col
10
- return "`"
11
- end
12
-
13
- def escape_val
14
- return "'"
15
- end
16
-
17
- def initialize(baza_db_obj)
18
- @baza_db = baza_db_obj
19
- @conn = Mono::Data::SqliteClient::SqliteConnection.new("URI=file:" + @baza_db.opts[:path] + ",version=3")
20
- @conn.Open
21
- end
22
-
23
- def query(string)
24
- dbcmd = @conn.CreateCommand
25
- dbcmd.CommandText = string
26
- reader = dbcmd.ExecuteReader
27
- return Baza::Driver::Sqlite3_ironruby_result.new(reader)
28
- end
29
-
30
- def escape(string)
31
- if (!string)
32
- return ""
33
- end
34
-
35
- string = string.gsub("'", "\\'")
36
- return string
37
- end
38
-
39
- def last_id
40
- return @conn.last_insert_row_id
41
- end
42
- end
43
-
44
- class Baza::Driver::Sqlite3_ironruby_result
45
- def initialize(reader)
46
- @reader = reader
47
- end
48
-
49
- def fetch
50
- if !@reader.Read
51
- return false
52
- end
53
-
54
- ret = {}
55
-
56
- count = 0
57
- while true
58
- begin
59
- ret[@reader.get_name(count)] = @reader.get_string(count)
60
- rescue IndexError => e
61
- break
62
- end
63
-
64
- count += 1
65
- end
66
-
67
- return ret
68
- end
69
- end