From bba6721754711446268445044406d74dda01aafc Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 9 Apr 2019 18:37:21 +0200 Subject: Allow journey editing, keep track of edited journey attributes Provides a workaround for #2 --- lib/Travelynx.pm | 18 ++++++++++-------- lib/Travelynx/Command/database.pm | 16 +++++++++++++++- templates/journey.html.ep | 13 ++++++++++++- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 337250b..8709c47 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -277,7 +277,7 @@ sub startup { return $self->app->dbh->prepare( qq{ update user_actions - set sched_time = to_timestamp(?), edited = 1 + set sched_time = to_timestamp(?), edited = edited | 1 where id = ? and action_id = ? } ); @@ -291,7 +291,7 @@ sub startup { return $self->app->dbh->prepare( qq{ update user_actions - set real_time = to_timestamp(?), edited = 1 + set real_time = to_timestamp(?), edited = edited | 2 where id = ? and action_id = ? } ); @@ -304,12 +304,12 @@ sub startup { return $self->app->dbh->prepare( qq{ insert into user_actions ( - user_id, action_id, station_id, action_time, + user_id, action_id, station_id, action_time, edited, train_type, train_line, train_no, train_id, sched_time, real_time, route, messages ) values ( - ?, ?, ?, to_timestamp(?), + ?, ?, ?, to_timestamp(?), ? ?, ?, ?, ?, to_timestamp(?), to_timestamp(?), ?, ? @@ -665,6 +665,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;} name => $status->{station_name} ), DateTime->now( time_zone => 'Europe/Berlin' )->epoch, + 0, $train->type, $train->line_no, $train->train_no, @@ -778,8 +779,8 @@ qq{select * from pending_mails where email = ? and num_tries > 1;} name => $status->{station_name} ), $now->epoch, - undef, undef, undef, undef, undef, - undef, undef, undef + 0, undef, undef, undef, undef, + undef, undef, undef, undef ); if ( defined $success ) { $self->invalidate_stats_cache; @@ -807,6 +808,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;} name => $status->{station_name} ), $now->epoch, + 0, $train->type, $train->line_no, $train->train_no, @@ -1289,7 +1291,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;} ? [ split( qr{[|]}, $raw_route ) ] : undef, completed => 0, - edited => $edited // 0, + edited => $edited << 8, } ); } @@ -1313,7 +1315,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;} $ref->{no} //= $train_no; $ref->{messages} //= [ split( qr{[|]}, $raw_messages ) ]; $ref->{route} //= [ split( qr{[|]}, $raw_route ) ]; - $ref->{edited} += $edited; + $ref->{edited} |= $edited; if ( $opt{verbose} ) { my @parsed_messages; diff --git a/lib/Travelynx/Command/database.pm b/lib/Travelynx/Command/database.pm index 4175d58..352c890 100644 --- a/lib/Travelynx/Command/database.pm +++ b/lib/Travelynx/Command/database.pm @@ -46,6 +46,7 @@ sub initialize_db { action_id smallint not null, station_id int references stations (id), action_time timestamptz not null, + edited not null, train_type varchar(16), train_line varchar(16), train_no varchar(16), @@ -66,7 +67,7 @@ sub initialize_db { token varchar(80) not null, primary key (user_id, type) ); - insert into schema_version values (0); + insert into schema_version values (2); } ); } @@ -92,6 +93,19 @@ my @migrations = ( } ); }, + + # v1 -> v2 + sub { + my ($dbh) = @_; + return $dbh->do( + qq{ + update user_actions set edited = 0; + alter table user_actions + alter column edited set not null; + update schema_version set version = 2; + } + ); + }, ); sub run { diff --git a/templates/journey.html.ep b/templates/journey.html.ep index b5c24a7..07c53c1 100644 --- a/templates/journey.html.ep +++ b/templates/journey.html.ep @@ -27,7 +27,9 @@ <%= $journey->{sched_departure}->strftime('%d.%m.%Y') %>

% if ($journey->{edited}) { -

Die Ankunfts- und Abfahrtsdaten wurden nachträglich bearbeitet.

+

+ ∗ Daten wurden manuell eingetragen +

% } @@ -54,6 +56,9 @@ % else { %= $journey->{sched_departure}->strftime('%H:%M'); % } + % if ($journey->{edited} & 0x0003) { + ∗ + % } @@ -76,6 +81,9 @@ % else { %= $journey->{sched_arrival}->strftime('%H:%M'); % } + % if ($journey->{edited} & 0x0300) { + ∗ + % } @@ -92,6 +100,9 @@ -- cgit v1.2.3
∅ <%= sprintf('%.f', $journey->{kmh_route}) %> km/h (<%= sprintf('%.f', $journey->{kmh_beeline}) %> km/h) + % if ($journey->{edited} & 0x0303) { + ∗ + % }