diff options
Diffstat (limited to 'lib/sisu/v5/db_select.rb')
-rw-r--r-- | lib/sisu/v5/db_select.rb | 177 |
1 files changed, 94 insertions, 83 deletions
diff --git a/lib/sisu/v5/db_select.rb b/lib/sisu/v5/db_select.rb index 3f232c14..333c3f0c 100644 --- a/lib/sisu/v5/db_select.rb +++ b/lib/sisu/v5/db_select.rb @@ -61,52 +61,120 @@ sqlite =end +module SiSU_DbAction + def db_action(sdb) + @sdb=sdb + def createdb + @sdb[:create].output_dir? + begin + @sdb[:create].create_db + rescue + @sdb[:create].output_dir? + end + end + def drop + @sdb[:drop].drop.tables + end + def create + @sdb[:create].output_dir? + begin + @sdb[:create].create_table.metadata_and_text + @sdb[:create].create_table.doc_objects + @sdb[:create].create_table.endnotes + @sdb[:create].create_table.endnotes_asterisk + @sdb[:create].create_table.endnotes_plus + @sdb[:create].create_table.urls + @sdb[:index].create_indexes + rescue + SiSU_Errors::Rescued.new($!,$@,'--sqlite').location + @sdb[:create].output_dir? do + __LINE__.to_s + ':' + __FILE__ + end + end + end + def import + db_exist? + @sdb[:import].marshal_load + tell=case @sql_type + when :sqlite + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + "sqlite3 #{@db.sqlite.db} database?" + ) + when :pg + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + "pgaccess or psql #{@db.psql.db} database?" + ) + else '???' + end + tell.puts_grey if @opt.act[:verbose][:set]==:on + end + def remove + db_exist? + @sdb[:remove_doc].remove + end + def update + remove + import + end + self + end +end module SiSU_DbSelect class Case + include SiSU_DbAction def initialize(opt,conn='',sql_type=:pg) @opt,@conn,@sql_type=opt,conn,sql_type @db=SiSU_Env::InfoDb.new @file_maint=sql_maintenance_file - @sdb= - SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) - @sdb_index= - SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) - @sdb_no= - SiSU_DbDBI::Drop.new(@opt,@conn,@db,@sql_type) + @sdb={ + create: SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type), + index: SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type), + drop: SiSU_DbDBI::Drop.new(@opt,@conn,@db,@sql_type), + } if (@opt.act[:psql_import][:set]==:on \ || @opt.act[:psql_update][:set]==:on) \ or (@opt.act[:sqlite_import][:set]==:on \ || @opt.act[:sqlite_update][:set]==:on) - @sdb_import= - SiSU_DbDBI::Import.new(@opt,@conn,@file_maint,@sql_type) - @sdb_remove_doc= - SiSU_DbDBI::Remove.new(@opt,@conn,@file_maint,@sql_type) + @sdb[:import]=SiSU_DbDBI::Import.new(@opt,@conn,@file_maint,@sql_type) + @sdb[:remove_doc]=SiSU_DbDBI::Remove.new(@opt,@conn,@file_maint,@sql_type) elsif (@opt.act[:psql_remove][:set]==:on \ or @opt.act[:sqlite_remove][:set]==:on) - @sdb_remove_doc= - SiSU_DbDBI::Remove.new(@opt,@conn,@file_maint,@sql_type) + @sdb[:remove_doc]=SiSU_DbDBI::Remove.new(@opt,@conn,@file_maint,@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, you may need to run:\n} \ - + %{ sisu --#{@sql_type} --createall\n} \ + puts %{no connection with sqlite database established, you may need to run:\n} \ + + %{ sisu --sqlite --createall\n} \ + %{ before attempting to populate the database} - exit + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( + "\n" \ + + 'Attempting to initialize db' + "\n" \ + + 'Creating db tables' + ) + db_action(@sdb).create end if @conn.is_a?(NilClass) - db=if @sql_type==:sqlite - puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ - + %{ sisu --#{@sql_type} --createall\n} \ + if @sql_type==:sqlite + puts %{no connection with sqlite database established, you may need to run:\n} \ + + %{ sisu --sqlite --createall\n} \ + %{ before attempting to populate the database} + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( + "\n" \ + + 'Attempting to initialize db' + "\n" \ + + 'Creating db tables' + ) + db_action(@sdb).create @db.sqlite.db else - puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ + puts %{no connection with pg database established, you may need to run:\n} \ + %{ createdb "#{@db.psql.db}"\n} \ + %{ after that don't forget to run:\n} \ - + %{ sisu --#{@sql_type} --createall\n} \ + + %{ sisu --pg --createall\n} \ + %{ before attempting to populate the database} @db.psql.db end @@ -133,87 +201,30 @@ module SiSU_DbSelect end file end - def db_action - def createdb - @sdb.output_dir? - begin - @sdb.create_db - rescue - @sdb.output_dir? - end - end - def drop - @sdb_no.drop.tables - end - def create - @sdb.output_dir? - begin - @sdb.create_table.metadata_and_text - @sdb.create_table.doc_objects - @sdb.create_table.endnotes - @sdb.create_table.endnotes_asterisk - @sdb.create_table.endnotes_plus - @sdb.create_table.urls - @sdb_index.create_indexes - rescue - SiSU_Errors::Rescued.new($!,$@,'--sqlite').location - @sdb.output_dir? do - __LINE__.to_s + ':' + __FILE__ - end - end - end - def import - db_exist? - @sdb_import.marshal_load - tell=case @sql_type - when :sqlite - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - "sqlite3 #{@db.sqlite.db} database?" - ) - when :pg - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - "pgaccess or psql #{@db.psql.db} database?" - ) - else '???' - end - tell.puts_grey if @opt.act[:verbose][:set]==:on - end - def remove - db_exist? - @sdb_remove_doc.remove - end - def update - remove - import - end - self - end def cases if @opt.act[:psql_drop][:set] ==:on \ or @opt.act[:sqlite_drop][:set] ==:on - db_action.drop + db_action(@sdb).drop end if @opt.act[:psql_createdb][:set] ==:on \ or @opt.act[:sqlite_createdb][:set] ==:on - db_action.createdb + db_action(@sdb).createdb end if @opt.act[:psql_create][:set] ==:on \ or @opt.act[:sqlite_create][:set] ==:on - db_action.create + db_action(@sdb).create end if @opt.act[:psql_update][:set] ==:on \ or @opt.act[:sqlite_update][:set] ==:on - db_action.update + db_action(@sdb).update else if @opt.act[:psql_remove][:set] ==:on \ or @opt.act[:sqlite_remove][:set] ==:on - db_action.remove + db_action(@sdb).remove end if @opt.act[:psql_import][:set] ==:on \ or @opt.act[:sqlite_import][:set] ==:on - db_action.import + db_action(@sdb).import end end end |