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