Bugzilla – Attachment 147606 Details for
Bug 30069
Add edifact_messages to cleanup_database.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 30069: Add edifact-messages to cleanup_database.pl
Bug-30069-Add-edifact-messages-to-cleanupdatabasep.patch (text/plain), 9.64 KB, created by
Kyle M Hall (khall)
on 2023-03-02 13:00:05 UTC
(
hide
)
Description:
Bug 30069: Add edifact-messages to cleanup_database.pl
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2023-03-02 13:00:05 UTC
Size:
9.64 KB
patch
obsolete
>From de0eb70bd4fcec6184f09ca36e0849809c3093c3 Mon Sep 17 00:00:00 2001 >From: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com> >Date: Wed, 15 Feb 2023 14:20:54 +0000 >Subject: [PATCH] Bug 30069: Add edifact-messages to cleanup_database.pl > >This patch allows users to clear out old edifact_messages using the cleanup_database script. The number of days can either be set in the CLI or the default value of 365 can be used. > >Test plan: >1) Ensure you have some EDI orders or even just some dummy messages in the edifact_messages table >2) Run perl misc/cronjobs/cleanup_database.pl --edifact-messages 100 --verbose (Change the number of days according to the data in your table) >3) The response should show a number of messages that would have been deleted >4) Run perl misc/cronjobs/cleanup_database.pl --edifact-messages 100 --verbose --confirm >5) The response should now show the same number of messages have been deleted >6) Check your edifact_messages table to confirm that the data has been deleted > >Sponsored-by: PTFS Europe >Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > misc/cronjobs/cleanup_database.pl | 119 ++++++++++++++++++++---------- > 1 file changed, 80 insertions(+), 39 deletions(-) > >diff --git a/misc/cronjobs/cleanup_database.pl b/misc/cronjobs/cleanup_database.pl >index 940cdf55d6..1400309d74 100755 >--- a/misc/cronjobs/cleanup_database.pl >+++ b/misc/cronjobs/cleanup_database.pl >@@ -29,6 +29,7 @@ use constant DEFAULT_SHARE_INVITATION_EXPIRY_DAYS => 14; > use constant DEFAULT_DEBARMENTS_PURGEDAYS => 30; > use constant DEFAULT_JOBS_PURGEDAYS => 1; > use constant DEFAULT_JOBS_PURGETYPES => qw{ update_elastic_index }; >+use constant DEFAULT_EDIFACT_MSG_PURGEDAYS => 365; > > use Koha::Script -cron; > use C4::Context; >@@ -49,10 +50,11 @@ use Koha::Item::Transfers; > use Koha::PseudonymizedTransactions; > use Koha::Patron::Messages; > use Koha::Patron::Debarments qw( DelDebarment ); >+use Koha::Database; > > sub usage { > print STDERR <<USAGE; >-Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] [--import DAYS] [--logs DAYS] [--searchhistory DAYS] [--restrictions DAYS] [--all-restrictions] [--fees DAYS] [--temp-uploads] [--temp-uploads-days DAYS] [--uploads-missing 0|1 ] [--statistics DAYS] [--deleted-catalog DAYS] [--deleted-patrons DAYS] [--old-issues DAYS] [--old-reserves DAYS] [--transfers DAYS] [--labels DAYS] [--cards DAYS] [--bg-days DAYS [--bg-type TYPE] ] >+Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] [--import DAYS] [--logs DAYS] [--searchhistory DAYS] [--restrictions DAYS] [--all-restrictions] [--fees DAYS] [--temp-uploads] [--temp-uploads-days DAYS] [--uploads-missing 0|1 ] [--statistics DAYS] [--deleted-catalog DAYS] [--deleted-patrons DAYS] [--old-issues DAYS] [--old-reserves DAYS] [--transfers DAYS] [--labels DAYS] [--cards DAYS] [--bg-days DAYS [--bg-type TYPE] ] [--edifact-messages DAYS] > > -h --help prints this help message, and exits, ignoring all > other options >@@ -114,6 +116,8 @@ Usage: $0 [-h|--help] [--confirm] [--sessions] [--sessdays DAYS] [-v|--verbose] > --jobs-type TYPES What type of background job to purge. Defaults to "update_elastic_index" if omitted > Specifying "all" will purge all types. Repeatable. > --reports DAYS Purge reports data saved more than DAYS days ago. The data is created by running runreport.pl with the --store-results option. >+ --edifact-messages DAYS Purge entries from edifact_messages table older than DAYS days. >+ Defaults to 365 days if no days specified. > USAGE > exit $_[0]; > } >@@ -158,51 +162,53 @@ my @preserve_logs; > my $jobs_days; > my @jobs_types; > my $reports; >+my $edifact_msg_days; > > my $command_line_options = join(" ",@ARGV); > > GetOptions( >- 'h|help' => \$help, >- 'confirm' => \$confirm, >- 'sessions' => \$sessions, >- 'sessdays:i' => \$sess_days, >- 'v|verbose' => \$verbose, >- 'm|mail:i' => \$mail, >- 'zebraqueue:i' => \$zebraqueue_days, >- 'merged' => \$purge_merged, >- 'import:i' => \$pImport, >- 'z3950' => \$pZ3950, >- 'logs:i' => \$pLogs, >- 'log-module:s' => \@log_modules, >- 'preserve-log:s' => \@preserve_logs, >- 'messages:i' => \$pMessages, >- 'fees:i' => \$fees_days, >- 'searchhistory:i' => \$pSearchhistory, >- 'list-invites:i' => \$pListShareInvites, >- 'restrictions:i' => \$pDebarments, >- 'all-restrictions' => \$allDebarments, >- 'del-exp-selfreg' => \$pExpSelfReg, >- 'del-unv-selfreg:i' => \$pUnvSelfReg, >- 'unique-holidays:i' => \$special_holidays_days, >- 'temp-uploads' => \$temp_uploads, >- 'temp-uploads-days:i' => \$temp_uploads_days, >- 'uploads-missing:i' => \$uploads_missing, >- 'oauth-tokens' => \$oauth_tokens, >- 'statistics:i' => \$pStatistics, >- 'deleted-catalog:i' => \$pDeletedCatalog, >- 'deleted-patrons:i' => \$pDeletedPatrons, >- 'old-issues:i' => \$pOldIssues, >- 'old-reserves:i' => \$pOldReserves, >- 'transfers:i' => \$pTransfers, >+ 'h|help' => \$help, >+ 'confirm' => \$confirm, >+ 'sessions' => \$sessions, >+ 'sessdays:i' => \$sess_days, >+ 'v|verbose' => \$verbose, >+ 'm|mail:i' => \$mail, >+ 'zebraqueue:i' => \$zebraqueue_days, >+ 'merged' => \$purge_merged, >+ 'import:i' => \$pImport, >+ 'z3950' => \$pZ3950, >+ 'logs:i' => \$pLogs, >+ 'log-module:s' => \@log_modules, >+ 'preserve-log:s' => \@preserve_logs, >+ 'messages:i' => \$pMessages, >+ 'fees:i' => \$fees_days, >+ 'searchhistory:i' => \$pSearchhistory, >+ 'list-invites:i' => \$pListShareInvites, >+ 'restrictions:i' => \$pDebarments, >+ 'all-restrictions' => \$allDebarments, >+ 'del-exp-selfreg' => \$pExpSelfReg, >+ 'del-unv-selfreg:i' => \$pUnvSelfReg, >+ 'unique-holidays:i' => \$special_holidays_days, >+ 'temp-uploads' => \$temp_uploads, >+ 'temp-uploads-days:i' => \$temp_uploads_days, >+ 'uploads-missing:i' => \$uploads_missing, >+ 'oauth-tokens' => \$oauth_tokens, >+ 'statistics:i' => \$pStatistics, >+ 'deleted-catalog:i' => \$pDeletedCatalog, >+ 'deleted-patrons:i' => \$pDeletedPatrons, >+ 'old-issues:i' => \$pOldIssues, >+ 'old-reserves:i' => \$pOldReserves, >+ 'transfers:i' => \$pTransfers, > 'pseudo-transactions:i' => \$pPseudoTransactions, > 'pseudo-transactions-from:s' => \$pPseudoTransactionsFrom, > 'pseudo-transactions-to:s' => \$pPseudoTransactionsTo, >- 'labels' => \$labels, >- 'cards' => \$cards, >- 'return-claims' => \$return_claims, >- 'jobs-type:s' => \@jobs_types, >- 'jobs-days:i' => \$jobs_days, >- 'reports:i' => \$reports, >+ 'labels' => \$labels, >+ 'cards' => \$cards, >+ 'return-claims' => \$return_claims, >+ 'jobs-type:s' => \@jobs_types, >+ 'jobs-days:i' => \$jobs_days, >+ 'reports:i' => \$reports, >+ 'edifact-messages:i' => \$edifact_msg_days, > ) || usage(1); > > # Use default values >@@ -217,6 +223,7 @@ $pDebarments = DEFAULT_DEBARMENTS_PURGEDAYS if defined($pDebarment > $pMessages = DEFAULT_MESSAGES_PURGEDAYS if defined($pMessages) && $pMessages == 0; > $jobs_days = DEFAULT_JOBS_PURGEDAYS if defined($jobs_days) && $jobs_days == 0; > @jobs_types = (DEFAULT_JOBS_PURGETYPES) if $jobs_days && @jobs_types == 0; >+$edifact_msg_days = DEFAULT_EDIFACT_MSG_PURGEDAYS if defined($edifact_msg_days) && $edifact_msg_days == 0; > > if ($help) { > usage(0); >@@ -256,6 +263,7 @@ unless ( $sessions > || $return_claims > || $jobs_days > || $reports >+ || $edifact_msg_days > ) { > print "You did not specify any cleanup work for the script to do.\n\n"; > usage(1); >@@ -725,6 +733,16 @@ if ($reports) { > } > } > >+if($edifact_msg_days) { >+ print "Purging edifact messages older than $edifact_msg_days days.\n" if $verbose; >+ my $count = PurgeEdifactMessages($edifact_msg_days, $confirm); >+ if ( $verbose ) { >+ say $confirm >+ ? sprintf( "Done with purging %d edifact messages", $count ) >+ : sprintf( "%d edifact messages would have been removed", $count ); >+ } >+} >+ > cronlogaction({ action => 'End', info => "COMPLETED" }); > > exit(0); >@@ -872,3 +890,26 @@ sub PurgeSavedReports { > }); > $sth->execute( $reports ); > } >+ >+sub PurgeEdifactMessages { >+ my ( $days, $doit ) = @_; >+ >+ my $count = 0; >+ my $schema = Koha::Database->new()->schema(); >+ >+ $sth = $dbh->prepare( >+ q{ >+ SELECT id >+ FROM edifact_messages >+ WHERE transfer_date < date_sub(curdate(), INTERVAL ? DAY) >+ } >+ ); >+ $sth->execute($days) or die $dbh->errstr; >+ >+ while ( my ($msg_id) = $sth->fetchrow_array) { >+ my $msg = $schema->resultset('EdifactMessage')->find($msg_id); >+ $msg->delete if $doit; >+ $count++; >+ } >+ return $count; >+} >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 30069
:
146690
|
146694
|
146976
|
146977
|
147564
| 147606 |
147607
|
147608
|
147609