Allow journey editing, keep track of edited journey attributes

Provides a workaround for #2
This commit is contained in:
Daniel Friesel 2019-04-09 18:37:21 +02:00
parent 3ae6bda093
commit bba6721754
3 changed files with 37 additions and 10 deletions

View file

@ -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;

View file

@ -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 {

View file

@ -27,7 +27,9 @@
<b><%= $journey->{sched_departure}->strftime('%d.%m.%Y') %></b>
</p>
% if ($journey->{edited}) {
<p>Die Ankunfts- und Abfahrtsdaten wurden nachträglich bearbeitet.</p>
<p>
Daten wurden manuell eingetragen
</p>
% }
<table class="striped">
<tr>
@ -54,6 +56,9 @@
% else {
%= $journey->{sched_departure}->strftime('%H:%M');
% }
% if ($journey->{edited} & 0x0003) {
% }
</td>
</tr>
<tr>
@ -76,6 +81,9 @@
% else {
%= $journey->{sched_arrival}->strftime('%H:%M');
% }
% if ($journey->{edited} & 0x0300) {
% }
</td>
</tr>
<tr>
@ -92,6 +100,9 @@
<td>
∅ <%= sprintf('%.f', $journey->{kmh_route}) %> km/h
(<%= sprintf('%.f', $journey->{kmh_beeline}) %> km/h)
% if ($journey->{edited} & 0x0303) {
% }
</td>
</tr>
<tr>