sub
_dbh_last_insert_id {
my
(
$self
,
$dbh
,
$source
,
$col
) =
@_
;
$dbh
->func(
'last_insert_rowid'
);
}
sub
backup
{
my
(
$self
,
$dir
) =
@_
;
$dir
||=
'./'
;
my
$dsn
=
$self
->connect_info()->[0];
my
$dbname
= $1
if
(
$dsn
=~ /dbname=([^;]+)/);
if
(!
$dbname
)
{
$dbname
= $1
if
(
$dsn
=~ /^dbi:SQLite:(.+)$/i);
}
$self
->throw_exception(
"Cannot determine name of SQLite db file"
)
if
(!
$dbname
|| !-f
$dbname
);
my
(
$vol
,
$dbdir
,
$file
) = File::Spec->splitpath(
$dbname
);
$file
= strftime(
"%Y-%m-%d-%H_%M_%S"
,
localtime
()) .
$file
;
$file
=
"B$file"
while
(-f
$file
);
mkdir
(
$dir
)
unless
-f
$dir
;
my
$backupfile
= File::Spec->catfile(
$dir
,
$file
);
my
$res
= copy(
$dbname
,
$backupfile
);
$self
->throw_exception(
"Backup failed! ($!)"
)
if
(!
$res
);
return
$backupfile
;
}
1;