aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2010-04-17 21:49:35 -0400
committerRalph Amissah <ralph@amissah.com>2010-04-17 21:50:42 -0400
commitd1eeab54588f762adfa492ace63bfd09f4e1e350 (patch)
tree7dc4cbed50c73b3ee75af23e6b61c6c114d99f6d
parentdb_import sqlite, prevent multiple import of file with same filename(.sst) (diff)
db_select, check for whether db exists before attempting certain actions
(note this does not check whether tables have been created)
-rw-r--r--lib/sisu/v2/db_select.rb29
1 files changed, 25 insertions, 4 deletions
diff --git a/lib/sisu/v2/db_select.rb b/lib/sisu/v2/db_select.rb
index 1ac9195f..87452c5c 100644
--- a/lib/sisu/v2/db_select.rb
+++ b/lib/sisu/v2/db_select.rb
@@ -61,16 +61,30 @@ module SiSU_DB_select
class Case
def initialize(opt,conn='',sql_type='pg')
@opt,@conn,@sql_type=opt,conn,sql_type
- @file=sql_maintenance_file
@db=SiSU_Env::Info_db.new
+ @file=sql_maintenance_file
@sdb=SiSU_DB_DBI::Create.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
@sdb_index=SiSU_DB_DBI::Index.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
@sdb_no=SiSU_DB_DBI::Drop.new(@opt,@conn,@db,@sql_type) # db_dbi.rb
if @opt.mod.inspect =~/update|import/
@sdb_import=SiSU_DB_DBI::Import.new(@opt,@conn,@file,@sql_type)
- @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file)
+ @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file,@sql_type)
elsif @opt.mod.inspect =~/remove/
- @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file)
+ @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file,@sql_type)
+ end
+ end
+ def db_exist?
+ if @sql_type=='sqlite' \
+ and (not (FileTest.file?(@db.sqlite.db)) or FileTest.zero?(@db.sqlite.db))
+ puts %{no connection with #{@sql_type} database established, createdb "#{@db.sqlite.db}"?}
+ exit
+ end
+ if @conn.class==NilClass
+ db=@sql_type=='sqlite' \
+ ? @db.sqlite.db \
+ : @db.psql.db
+ puts %{no connection with #{@sql_type} database established, createdb "#{db}"?}
+ exit
end
end
def sql_maintenance_file
@@ -109,7 +123,7 @@ module SiSU_DB_select
@sdb_index.create_indexes
rescue; SiSU_Errors::Info_error.new($!,$@,'-D').error; @sdb.output_dir?
end
- when /^--createtable(s)?$/
+ when /^--createtables?$/
@sdb.output_dir?
begin
@sdb.create_table.metadata_and_text
@@ -147,6 +161,7 @@ module SiSU_DB_select
rescue; @sdb.output_dir?
end
when /^--import$/
+ db_exist?
@sdb_import.marshal_load
tell=case @sql_type
when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite #{@db.sqlite.db} database?")
@@ -155,19 +170,25 @@ module SiSU_DB_select
end
tell.puts_grey if @opt.cmd =~/v/
when /^--update$/
+ db_exist?
@sdb_remove_doc.remove
@sdb_import.marshal_load
tell=SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?")
tell.puts_grey if @opt.cmd =~/v/
when /^--remove$/
+ db_exist?
@sdb_remove_doc.remove
when /^--index$/
+ db_exist?
@sdb_index.create_indexes
when /^droptable(s)?$/
+ db_exist?
@sdb_no.drop.tables
when /^--dropindex(es)?$/
+ db_exist?
@sdb_no.drop.indexes
when /^--(?:dropall|drop)$/
+ db_exist?
@sdb_no.drop.tables
when /^--(?:db=)?(?:(?:sq)?lite|pg(?:sql)?|my(?:sql)?)$/
else