class SiSU_DbRemove::Remove
Public Class Methods
new(opt,conn,file,sql_type)
click to toggle source
# File lib/sisu/db_remove.rb, line 58 def initialize(opt,conn,file,sql_type) @opt,@conn,@file,@sql_type=opt,conn,file,sql_type @md=SiSU_Param::Parameters.new(@opt).get @fnb=@md.fnb @db=SiSU_Env::InfoDb.new end
Public Instance Methods
remove()
click to toggle source
# File lib/sisu/db_remove.rb, line 64 def remove driver_sqlite3=if @sql_type==:sqlite (@conn.inspect.match(/^(.{10})/)[1]==@db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1]) \ ? true : false end del_id=if driver_sqlite3 begin remove_selected=%{ SELECT tid FROM metadata_and_text WHERE src_filename = '#{@md.fns}' AND metadata_and_text.language_document_char = '#{@opt.lng}' ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns @conn.get_first_value(remove_selected).to_i rescue SQLite3::Exception => e #not tested puts "Exception occurred" SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark(e.inspect) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( "\n" \ + 'Attempting to initialize db' + "\n" \ + 'Creating db tables' ) sdb={ create: SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type), index: SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type), } db_action(sdb).create end else begin remove_selected=%{ SELECT metadata_and_text.tid FROM metadata_and_text WHERE metadata_and_text.src_filename = '#{@md.fns}' AND metadata_and_text.language_document_char = '#{@opt.lng}' ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns x=@conn.exec(remove_selected) x.field_values("tid")[0] rescue PG::Error => e err=[ e.result.error_field( PG::Result::PG_DIAG_SEVERITY ), e.result.error_field( PG::Result::PG_DIAG_SQLSTATE ), e.result.error_field( PG::Result::PG_DIAG_MESSAGE_PRIMARY ), e.result.error_field( PG::Result::PG_DIAG_MESSAGE_DETAIL ), e.result.error_field( PG::Result::PG_DIAG_MESSAGE_HINT ), e.result.error_field( PG::Result::PG_DIAG_STATEMENT_POSITION ), e.result.error_field( PG::Result::PG_DIAG_INTERNAL_POSITION ), e.result.error_field( PG::Result::PG_DIAG_INTERNAL_QUERY ), e.result.error_field( PG::Result::PG_DIAG_CONTEXT ), e.result.error_field( PG::Result::PG_DIAG_SOURCE_FILE ), e.result.error_field( PG::Result::PG_DIAG_SOURCE_LINE ), e.result.error_field( PG::Result::PG_DIAG_SOURCE_FUNCTION ), ] SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("\n" + err.inspect) if err[2] =~/relation "\S+?" does not exist/ \ or err.inspect =~/relation "\S+?" does not exist/ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( "\n" \ + err[2] + "\n" \ + 'Attempting to initialize db' + "\n" \ + 'Creating db tables' ) sdb={ create: SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type), index: SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type), } db_action(sdb).create end end end if del_id sql_entry=[ "DELETE FROM endnotes WHERE metadata_tid = '#{del_id}';", "DELETE FROM endnotes_asterisk WHERE metadata_tid = '#{del_id}';", "DELETE FROM endnotes_plus WHERE metadata_tid = '#{del_id}';", "DELETE FROM doc_objects WHERE metadata_tid = '#{del_id}';", "DELETE FROM urls WHERE metadata_tid = '#{del_id}';", "DELETE FROM metadata_and_text WHERE metadata_and_text.tid = '#{del_id}';", ] if driver_sqlite3 @conn.transaction sql_entry.each do |s| begin @conn.execute(s) rescue next end end @conn.commit if driver_sqlite3 else sql_entry.each do |s| begin @conn.exec_params(s) rescue next end end end if @opt.act[:maintenance][:set]==:on @file.puts sql_entry end else if (@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new( @opt.selections.str, "no such file in database #{@db.psql.db}::#{@opt.fns}" ).puts_grey end end end