Loading index.pl +43 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,20 @@ app->attr( qq{select id from users where name = ?}); } ); app->attr( get_user_query => sub { my ($self) = @_; return $self->app->dbh->prepare( qq{ select id, name, status, is_public, email, registered_at, last_login, deletion_requested from users where id = ? } ); } ); app->attr( get_stationid_by_ds100_query => sub { my ($self) = @_; Loading Loading @@ -445,6 +459,35 @@ helper 'get_station_id' => sub { } }; helper 'get_user_data' => sub { my ($self) = @_; my $uid = $self->get_user_id; my $query = $self->app->get_user_query; $query->execute($uid); my $rows = $query->fetchall_arrayref; if ( @{$rows} ) { my @row = @{ $rows->[0] }; return { id => $row[0], name => $row[1], status => $row[2], is_public => $row[3], email => $row[4], registered_at => DateTime->from_epoch( epoch => $row[5], time_zone => 'Europe/Berlin' ), last_seen => DateTime->from_epoch( epoch => $row[6], time_zone => 'Europe/Berlin' ), deletion_requested => $row[7] }; } return; }; helper 'get_user_name' => sub { my ($self) = @_; Loading migrate.pl +64 −25 Original line number Diff line number Diff line Loading @@ -4,23 +4,28 @@ use strict; use warnings; use 5.020; use DateTime; use DBI; my $dbname = $ENV{TRAVELYNX_DB_FILE} // 'travelynx.sqlite'; my $dbh = DBI->connect( "dbi:SQLite:dbname=${dbname}", q{}, q{} ); my $has_version_query = $dbh->prepare(qq{ my $has_version_query = $dbh->prepare( qq{ select name from sqlite_master where type = 'table' and name = 'schema_version'; }); } ); sub get_schema_version { $has_version_query->execute(); my $rows = $has_version_query->fetchall_arrayref; if ( @{$rows} == 1 ) { my $get_version_query = $dbh->prepare(qq{ my $get_version_query = $dbh->prepare( qq{ select version from schema_version; }); } ); $get_version_query->execute(); my $rows = $get_version_query->fetchall_arrayref; if ( @{$rows} == 0 ) { Loading @@ -32,36 +37,68 @@ sub get_schema_version { } my @migrations = ( # v0 -> v1 sub { $dbh->do(qq{ begin transaction; }); $dbh->do(qq{ $dbh->begin_work; $dbh->do( qq{ create table schema_version ( version integer primary key ); }); $dbh->do(qq{ } ); $dbh->do( qq{ insert into schema_version (version) values (1); }); $dbh->do(qq{ } ); $dbh->do( qq{ create table new_users ( id integer primary key, name char(64) not null unique, status int not null, is_public bool not null, email char(256), password text, registered_at datetime, last_login datetime registered_at datetime not null, last_login datetime not null, deletion_requested datetime ); } ); }); my $get_users_query = $dbh->prepare(qq{ my $get_users_query = $dbh->prepare( qq{ select * from users; }); $dbh->do(qq{ commit; }); } ); my $add_user_query = $dbh->prepare( qq{ insert into new_users (id, name, status, is_public, registered_at, last_login) values (?, ?, ?, ?, ?, ?) } ); $get_users_query->execute; while ( my @row = $get_users_query->fetchrow_array ) { my ( $id, $name ) = @row; my $now = DateTime->now( time_zone => 'Europe/Berlin' )->epoch; $add_user_query->execute( $id, $name, 0, 0, $now, $now ); } $dbh->do( qq{ drop table users; } ); $dbh->do( qq{ alter table new_users rename to users; } ); $dbh->commit; }, ); Loading @@ -77,3 +114,5 @@ for my $i ($schema_version .. $#migrations) { printf( "Updating to v%d\n", $i + 1 ); $migrations[$i](); } $dbh->disconnect; templates/account.html.ep +4 −3 Original line number Diff line number Diff line <h1>Account</h1> % my $acc = get_user_data(); <div class="row"> <table class="striped"> <tr> <th scope="row">Name</th> <td><%= get_user_name() %></td> <td><%= $acc->{name} %></td> </tr> <tr> <th scope="row">Mail</th> <td>fnord@example.org</td> <td><%= $acc->{email} %></td> </tr> <tr> <th scope="row">Registriert am</th> <td>01.01.1970 00:00</td> <td><%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %></td> </tr> </table> </div> Loading Loading
index.pl +43 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,20 @@ app->attr( qq{select id from users where name = ?}); } ); app->attr( get_user_query => sub { my ($self) = @_; return $self->app->dbh->prepare( qq{ select id, name, status, is_public, email, registered_at, last_login, deletion_requested from users where id = ? } ); } ); app->attr( get_stationid_by_ds100_query => sub { my ($self) = @_; Loading Loading @@ -445,6 +459,35 @@ helper 'get_station_id' => sub { } }; helper 'get_user_data' => sub { my ($self) = @_; my $uid = $self->get_user_id; my $query = $self->app->get_user_query; $query->execute($uid); my $rows = $query->fetchall_arrayref; if ( @{$rows} ) { my @row = @{ $rows->[0] }; return { id => $row[0], name => $row[1], status => $row[2], is_public => $row[3], email => $row[4], registered_at => DateTime->from_epoch( epoch => $row[5], time_zone => 'Europe/Berlin' ), last_seen => DateTime->from_epoch( epoch => $row[6], time_zone => 'Europe/Berlin' ), deletion_requested => $row[7] }; } return; }; helper 'get_user_name' => sub { my ($self) = @_; Loading
migrate.pl +64 −25 Original line number Diff line number Diff line Loading @@ -4,23 +4,28 @@ use strict; use warnings; use 5.020; use DateTime; use DBI; my $dbname = $ENV{TRAVELYNX_DB_FILE} // 'travelynx.sqlite'; my $dbh = DBI->connect( "dbi:SQLite:dbname=${dbname}", q{}, q{} ); my $has_version_query = $dbh->prepare(qq{ my $has_version_query = $dbh->prepare( qq{ select name from sqlite_master where type = 'table' and name = 'schema_version'; }); } ); sub get_schema_version { $has_version_query->execute(); my $rows = $has_version_query->fetchall_arrayref; if ( @{$rows} == 1 ) { my $get_version_query = $dbh->prepare(qq{ my $get_version_query = $dbh->prepare( qq{ select version from schema_version; }); } ); $get_version_query->execute(); my $rows = $get_version_query->fetchall_arrayref; if ( @{$rows} == 0 ) { Loading @@ -32,36 +37,68 @@ sub get_schema_version { } my @migrations = ( # v0 -> v1 sub { $dbh->do(qq{ begin transaction; }); $dbh->do(qq{ $dbh->begin_work; $dbh->do( qq{ create table schema_version ( version integer primary key ); }); $dbh->do(qq{ } ); $dbh->do( qq{ insert into schema_version (version) values (1); }); $dbh->do(qq{ } ); $dbh->do( qq{ create table new_users ( id integer primary key, name char(64) not null unique, status int not null, is_public bool not null, email char(256), password text, registered_at datetime, last_login datetime registered_at datetime not null, last_login datetime not null, deletion_requested datetime ); } ); }); my $get_users_query = $dbh->prepare(qq{ my $get_users_query = $dbh->prepare( qq{ select * from users; }); $dbh->do(qq{ commit; }); } ); my $add_user_query = $dbh->prepare( qq{ insert into new_users (id, name, status, is_public, registered_at, last_login) values (?, ?, ?, ?, ?, ?) } ); $get_users_query->execute; while ( my @row = $get_users_query->fetchrow_array ) { my ( $id, $name ) = @row; my $now = DateTime->now( time_zone => 'Europe/Berlin' )->epoch; $add_user_query->execute( $id, $name, 0, 0, $now, $now ); } $dbh->do( qq{ drop table users; } ); $dbh->do( qq{ alter table new_users rename to users; } ); $dbh->commit; }, ); Loading @@ -77,3 +114,5 @@ for my $i ($schema_version .. $#migrations) { printf( "Updating to v%d\n", $i + 1 ); $migrations[$i](); } $dbh->disconnect;
templates/account.html.ep +4 −3 Original line number Diff line number Diff line <h1>Account</h1> % my $acc = get_user_data(); <div class="row"> <table class="striped"> <tr> <th scope="row">Name</th> <td><%= get_user_name() %></td> <td><%= $acc->{name} %></td> </tr> <tr> <th scope="row">Mail</th> <td>fnord@example.org</td> <td><%= $acc->{email} %></td> </tr> <tr> <th scope="row">Registriert am</th> <td>01.01.1970 00:00</td> <td><%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %></td> </tr> </table> </div> Loading