package SL::DB::CsvImportReport;
use strict;
+use SL::DB;
use SL::DBUtils;
use SL::DB::MetaSetup::CsvImportReport;
sub destroy {
my ($self) = @_;
- my $dbh = $self->db->dbh;
-
- $dbh->begin_work;
-
- do_query($::form, $dbh, 'DELETE FROM csv_import_report_status WHERE csv_import_report_id = ?', $self->id);
- do_query($::form, $dbh, 'DELETE FROM csv_import_report_rows WHERE csv_import_report_id = ?', $self->id);
- do_query($::form, $dbh, 'DELETE FROM csv_import_reports WHERE id = ?', $self->id);
-
- if ($self->profile_id) {
- do_query($::form, $dbh, 'DELETE FROM csv_import_profile_settings WHERE csv_import_profile_id = ?', $self->profile_id);
- do_query($::form, $dbh, 'DELETE FROM csv_import_profiles WHERE id = ?', $self->profile_id);
- }
-
- $dbh->commit;
+ SL::DB->client->with_transaction(sub {
+ my $dbh = SL::DB->client->dbh;
+
+ do_query($::form, $dbh, 'DELETE FROM csv_import_report_status WHERE csv_import_report_id = ?', $self->id);
+ do_query($::form, $dbh, 'DELETE FROM csv_import_report_rows WHERE csv_import_report_id = ?', $self->id);
+ do_query($::form, $dbh, 'DELETE FROM csv_import_reports WHERE id = ?', $self->id);
+
+ if ($self->profile_id) {
+ my ($is_profile_used_elsewhere) = selectfirst_array_query($::form, $dbh, <<SQL, $self->profile_id);
+ SELECT id
+ FROM csv_import_reports
+ WHERE profile_id = ?
+ LIMIT 1
+SQL
+
+ if (!$is_profile_used_elsewhere) {
+ do_query($::form, $dbh, 'DELETE FROM csv_import_profile_settings WHERE csv_import_profile_id = ?', $self->profile_id);
+ do_query($::form, $dbh, 'DELETE FROM csv_import_profiles WHERE id = ?', $self->profile_id);
+ }
+ }
+ 1;
+ }) or do { die SL::DB->client->error };
}
1;