From bba6721754711446268445044406d74dda01aafc Mon Sep 17 00:00:00 2001
From: Daniel Friesel
Date: Tue, 9 Apr 2019 18:37:21 +0200
Subject: [PATCH] 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 @@
∅ <%= sprintf('%.f', $journey->{kmh_route}) %> km/h
(<%= sprintf('%.f', $journey->{kmh_beeline}) %> km/h)
+ % if ($journey->{edited} & 0x0303) {
+ ∗
+ % }
|