aisa/scripts/admin/oneoff/transfer_changes_to_database.pl

104 lines
3.0 KiB
Perl
Raw Permalink Normal View History

2025-11-26 09:31:54 +00:00
#!/usr/bin/perl
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
require cfg ;
use CGI::Carp qw(fatalsToBrowser);
# use Date::Calc qw(:all);
# use DBI;
# https://itvadmin.co.za/cgi-bin/scripts/admin/oneoff/transfer_changes_to_database.pl?1
#-------------------------------------------------------------------------------
my @ARGV = split(/\&/, $ENV{'QUERY_STRING'});
our $debug = $ARGV[0] ;
# our $username = 'rory' ;
if ($debug) { print "Content-type: text/html\n\n"; }
$debug = 0 ;
#------------------------------------------------------------------------------------------
&today ;
&db_open_upd ;
# &db_open_ro ;
our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it
&transfer_data("changes","event_quotes_changes") ; ;
&transfer_data("changes_demos","demo_changes") ; ;
&transfer_data("changes_analytics","analytics_changes") ; ;
&transfer_data("changes_quotes","quotes_changes") ; ;
$db_ignore_open_close = 0 ; # do one open and one close instead of repeating it
&db_close_conn ;
exit;
#------------------------------------------------------------------------------------------
sub transfer_data {
my ($changes_script,$changes_table) = @_ ;
my %seen_changes = () ; my $saved_line_max_id = 0 ; my $most_recent_line ; my $cnt_line = 1 ;
&db_min_ro($changes_table,'*','','','') ;
foreach (sort {$b <=> $a} keys %{$db{$changes_table}}) {
$seen_changes{$db{$changes_table}{$_}{changes}} = 1 ;
$saved_line_max_id = $_ if $saved_line_max_id < $_ ;
if ($cnt_line == 1) {
$cnt_line++ ;
my @abc = split(/\|/,$db{$changes_table}{$_}{changes}) ;
$most_recent_saved_line = $abc[0] ;
}
}
my $logfile = "/home/libs/data/logs/events/$changes_script.dat";
open(my $fh, "<", $logfile) or die "Can't open $logfile: $!";
my @lines = <$fh> ; # Slurp all lines into an array
# 202520250528164733|2025-05-28 16:47:33|event_quote_id='10427'|user_id=84|changed_from|last_update='2025-05-28 16:45:34',additional_notes='COURT 2 AND 3 Nkululeko 305 Aletia 31 5 COURT 2 Emihle 305 Nkululeko 31 5 COURT 3'
# 202520250528164733|2025-05-28 16:47:33|event_quote_id='10427'|user_id=84|changed_from|last_update='2025-05-28 16:45:34',additional_notes='COURT 2 AND 3 Nkululeko 305 Aletia 315 COURT 2 Emihle 305 Nkululeko 315 COURT 3'
my $line_count = scalar @lines ;
# my $line_count = $saved_line_max_id ;
$line_count += $saved_line_max_id ;
my %lines_ = () ;
foreach my $line (@lines) {
chomp $line ;
my @abc = split(/\|/,$line) ;
$seen_changes{$line} = 1 if $most_recent_saved_line && $abc[0] <= $most_recent_saved_line ;
$line_count-- if $seen_changes{$line} ;
$lines_{$line} = 1 ;
}
foreach my $line (@lines) {
chomp $line ;
next if $seen_changes{$line} ;
print "INSERT INTO $changes_table (id,changes) VALUES ($line_count,\"$line\") ; \n";
$line_count-- ;
}
close($fh);
} #-------------------------------------------------------------------------------
use db ;
use today ;
use common ;
use common_min ;