lib/sequel_rails/storage/jdbc.rb in sequel-rails-0.4.0 vs lib/sequel_rails/storage/jdbc.rb in sequel-rails-0.4.1
- old
+ new
@@ -1,44 +1,67 @@
module SequelRails
module Storage
class Jdbc < Abstract
def _is_mysql?
- database.match(/^jdbc:mysql/)
+ config['adapter'].match(/^jdbc:mysql/)
end
+ def _is_postgres?
+ config['adapter'].match(/^jdbc:postgresql/)
+ end
+
+ def _is_sqlite?
+ config['adapter'].match(/^jdbc:sqlite/)
+ end
+
def _root_url
- database.scan(/^jdbc:mysql:\/\/\w*:?\d*/)
+ config['url'].scan(/^jdbc:mysql:\/\/\w*:?\d*/).first
end
def db_name
- database.scan(/^jdbc:mysql:\/\/\w+:?\d*\/(\w+)/).flatten.first
+ config['database']
end
def _params
- database.scan(/\?.*$/)
+ config['url'].scan(/\?.*$/).first
end
def _create
- if _is_mysql?
+ if _is_sqlite?
+ return if in_memory?
+ ::Sequel.connect config['url']
+ elsif _is_mysql?
::Sequel.connect("#{_root_url}#{_params}") do |db|
db.execute("CREATE DATABASE IF NOT EXISTS `#{db_name}` DEFAULT CHARACTER SET #{charset} DEFAULT COLLATE #{collation}")
end
+ elsif _is_postgres?
+ system("createdb #{db_name}")
end
end
def _drop
- if _is_mysql?
+ if _is_sqlite?
+ return if in_memory?
+ ::Sequel.connect config['url']
+ elsif _is_mysql?
::Sequel.connect("#{_root_url}#{_params}") do |db|
db.execute("DROP DATABASE IF EXISTS `#{db_name}`")
end
+ elsif _is_postgres?
+ system("dropdb #{db_name}")
end
end
private
def collation
@collation ||= config['collation'] || ENV['COLLATION'] || 'utf8_unicode_ci'
+ end
+
+ def in_memory?
+ return false unless _is_sqlite?
+ database == ":memory:"
end
end
end
end