t* my version of playonbsd.com data
       
   URI git clone git://git.codevoid.de/playonbsd-sdk.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
       ---
   DIR commit c112345fcf267fb462af1bdf949d7991bd14d3ac
   DIR parent cadbf9b962b1e557b18525a8f3e119daf14a214b
   URI Author: Stefan Hagen <sh+git[at]codevoid[dot]de>
       Date:   Mon, 11 May 2020 20:26:03 +0200
       
       add store query
       
       Diffstat:
         M lib/PlayOnBSD.pm                    |      41 +++++++++++++++++--------------
         M playonbsd.sqlite                    |       0 
         M schema.sql                          |      11 ++---------
         M views/index.tt                      |      28 ++++++++++++++--------------
       
       4 files changed, 39 insertions(+), 41 deletions(-)
       ---
   DIR diff --git a/lib/PlayOnBSD.pm b/lib/PlayOnBSD.pm
       t@@ -34,41 +34,46 @@ sub init_db {
        
        get '/' => sub {
            my $db  = connect_db();
       -
       -    my $sql = 'SELECT 
       +    my $game_sql = 'SELECT 
                            game.id         AS GameID,
                            game.name       AS GameName,
                            game.imgsrc     AS GameImageSrc,
                            engine.id       AS EngineID,
                            engine.name     AS EngineName,
                            engine.href     AS EngineLinkSrc,
       -                    store.name      AS StoreName,
       -                    store.href      AS StoreLink,
                            game.comment    AS GameComment,
                            game.createdat  AS GameCreatedAt,
                            game.changedat  AS GameChangedAt
       -                FROM
       -                    game 
       +                FROM game 
                        INNER JOIN engine ON
                            engine.id = game.engine_id
       -                INNER JOIN gamestore_map ON
       -                    gamestore_map.game_id = game.id
       -                LEFT OUTER JOIN store ON
       -                    gamestore_map.store_id = store.id
                        ORDER BY game.id DESC';
        
       -    my $sth = $db->prepare($sql)
       -        or die $db->errstr;
       -    
       -    $sth->execute
       -        or die $sth->errstr;
       +    my $store_sql = 'SELECT 
       +                    storeinfo.id        AS StoreInfoID,
       +                    storeinfo.game_id   AS StoreInfoGameID,
       +                    storeinfo.name      AS StoreInfoName,
       +                    storeinfo.href      AS StoreInfoLinkSrc,
       +                    storeinfo.info      AS StoreInfoInfo,
       +                    storeinfo.createdat AS StoreInfoCreatedAt,
       +                    storeinfo.changedat AS StoreInfoChangedAt
       +                FROM storeinfo
       +                ORDER BY storeinfo.id DESC';
       +
       +    my $game_sth = $db->prepare($game_sql) or die $db->errstr;
       +    $game_sth->execute or die $game_sth->errstr;
       +    my $game_res = $game_sth->fetchall_hashref('GameID');
        
       -    my $res = $sth->fetchall_hashref('GameID');
       +    my $store_sth = $db->prepare($store_sql) or die $db->errstr;
       +    $store_sth->execute or die $store_sth->errstr;
       +    my $store_res = $store_sth->fetchall_hashref('StoreInfoID');
        
       -    print Dumper($res);
       +    print Dumper($game_res);
       +    print Dumper($store_res);
        
            template 'index.tt', {
       -        games => $res
       +        game  => $game_res,
       +        store => $store_res
            };
        };
        
   DIR diff --git a/playonbsd.sqlite b/playonbsd.sqlite
       Binary files differ.
   DIR diff --git a/schema.sql b/schema.sql
       t@@ -25,17 +25,10 @@ create table if not exists engine (
            changedat integer not null
        );
        
       ---  mapping table to map game entries with store entries
       -create table if not exists gamestore_map (
       -    game_id integer REFERENCES game(id),
       -    store_id integer REFERENCES store(id),
       -    createdat integer not null,
       -    changedat integer not null
       -);
       -
        --  store entries
       -create table if not exists store (
       +create table if not exists storeinfo (
            id integer primary key autoincrement,
       +    game_id integer REFERENCES game(id),
            name string not null,
            href string,
            info string,
   DIR diff --git a/views/index.tt b/views/index.tt
       t@@ -4,7 +4,7 @@
                  <h1>Welcome to playonbsd.com</h1>
                  <h2>The OpenBSD Gaming Community</h2>
                </div>
       -[% IF games.size %]
       +[% IF game.size %]
        <table>
          <tr>
            <th>
       t@@ -32,40 +32,40 @@
                ChangedAt
            </th>
          </tr>
       -  [% FOREACH entry IN games.keys.nsort %]
       +  [% FOREACH entry IN game.keys.nsort %]
          <tr>
            <td>
       -        [% games.$entry.game_id| html %]
       +        [% game.$entry.GameID| html %]
            </td>
            <td>
       -        [% games.$entry.title| html %]
       +        [% game.$entry.GameName| html %]
            </td>
            <td>
       -        <img width=64 height=64 src="[% games.$entry.image | html %]">
       +        <img width=64 height=64 src="[% game.$entry.GameImageSrc | html %]">
            </td>
            <td>
       -        [% games.$entry.engine | html %]
       +        <a href="[% game.$entry.EngineLinkSrc | html %]">[% game.$entry.EngineName | html %]</a>
            </td>
            <td>
       -    [% FOREACH id IN games.$entry.stores %]
       -        [% games.$entry.stores.$id.name | html %]
       -    [% END %]
       -        [% games.$entry.stores | html %]
       +        [% FOREACH id IN store.keys.nsort %]
       +    
       +            <a href="[% store.$id.StoreInfoLinkSrc | html %]">[% store.$id.StoreInfoName | html %]</a><br>
       +        [% END %]
            </td>
            <td>
       -        [% games.$entry.comment | html %]
       +        [% game.$entry.GameComment| html %]
            </td>
            <td>
       -        [% games.$entry.createdat | html %]
       +        [% game.$entry.GameCreatedAt | html %]
            </td>
            <td>
       -        [% games.$entry.changedat | html %]
       +        [% game.$entry.GameChangedAt | html %]
            </td>
          </tr>
          [% END %]
          </table>
        [% ELSE %]
       -  No games here so far<br>
       +  No game here so far<br>
        [% END %]
              </div>
        </div>