]> Frank Brehm's Git Trees - books.git/commitdiff
Aus Util::Verlag mach Plugin::Verlag
authorFrank Brehm <frank@brehm-online.com>
Tue, 16 Feb 2010 14:39:45 +0000 (14:39 +0000)
committerFrank Brehm <frank@brehm-online.com>
Tue, 16 Feb 2010 14:39:45 +0000 (14:39 +0000)
lib/FrBr/Books.pm
lib/FrBr/Books/Controller/Books.pm
lib/FrBr/Books/Controller/Verlag.pm
lib/FrBr/Books/Plugin/Verlag.pm [new file with mode: 0644]
lib/FrBr/Books/Util/Verlag.pm [deleted file]

index 483e04c570eb9e5b9ffb325dda4c7077ac7c1a62..2fad0ede4db98260c5dcf6bb232da93f2a0b34ab 100644 (file)
@@ -39,6 +39,7 @@ use Catalyst qw/
     Session::State::Cookie
 
     +FrBr::Books::Plugin::Ort
+    +FrBr::Books::Plugin::Verlag
     +FrBr::Books::Plugin::Waehrung
 
 /;
index 9bcd1f61a89ec27d1212d55980a73fe07e776b8a..08c244937106699f402d7d75109ece24103d1111 100644 (file)
@@ -13,9 +13,6 @@ use FrBr::Books::Util::Book;
 use FrBr::Books::Util::Bindungsart;
 use FrBr::Books::Util::Category;
 use FrBr::Books::Util::Serie;
-#use FrBr::Books::Util::Ort;
-use FrBr::Books::Util::Verlag;
-#use FrBr::Books::Util::Waehrung;
 use FrBr::Books::Util::User;
 
 =head1 NAME
@@ -1295,7 +1292,7 @@ sub prepare_data_structures : Private {
     $c->log->debug( get_output_string( $K . "Kategorien: ", $c->stash->{'kategorie_list'} ) );
 
     # Verlage zusamensammeln
-    my $verlagsliste = get_verlagsliste($c);
+    my $verlagsliste = $c->b_get_verlagsliste();
     $c->log->debug( get_output_string( $K . "Verlage gesamt: ", $verlagsliste ) );
     $c->stash->{'verlagsliste'} = {};
     $c->stash->{'verlags_ids'}  = [];
index fb355bbbd8d0994f03746e5b28036c23369d11ee..78ea4395ae45c52c57913424a53b6c1a6b2a5aac 100644 (file)
@@ -8,7 +8,6 @@ use warnings;
 use base 'Catalyst::Controller';
 
 use FrBr::Common;
-use FrBr::Books::Util::Verlag;
 
 =head1 NAME
 
@@ -123,7 +122,7 @@ sub list : Local {
         $c->session->{'verlag_list_page'} = $page;
     }
 
-    my ( $liste, $anzahl ) = get_verlagsliste( $c, 'get_books' => undef, 'page' => $page );
+    my ( $liste, $anzahl ) = $c->b_get_verlagsliste( 'get_books' => undef, 'page' => $page );
     $c->log->debug( get_output_string( $K, "Erhaltene Liste der Verlage: ", $liste ) ) if $c->stash->{'debug_level'} >= 2;
     $c->stash->{'verlage'} = $liste;
 
@@ -192,7 +191,7 @@ sub form_view : Path('view') {
        }
 
 
-       my $verlagsliste = get_verlagsliste( $c, 'verlags_id' => $verlags_id, 'get_books' => 1, );
+       my $verlagsliste = $c->b_get_verlagsliste( 'verlags_id' => $verlags_id, 'get_books' => 1, );
        $c->log->debug( get_output_string( $K, "Erhaltene Verlagsliste: ", $verlagsliste ) ) if $c->stash->{'debug_level'} >= 2;
 
        unless ( $verlagsliste and scalar( @$verlagsliste ) ) {
@@ -301,7 +300,7 @@ sub form_edit : Path('edit') {
     }
 
     # Angaben zum Verlag aus der Datenbank holen
-       my $vliste = get_verlagsliste( $c, 'verlags_id' => $vid, );
+       my $vliste = $c->b_get_verlagsliste( 'verlags_id' => $vid, );
 
     unless ( $vliste and scalar( @$vliste ) ) {
         $c->stash->{'template'} = 'error.tt2';
@@ -381,7 +380,7 @@ sub delete_verlag_form : Path('delete') {
     $c->session->{'delete_verlags_id'} = $vid;
 
     # Angaben zum Verlag aus der Datenbank holen
-    my $vliste = get_verlagsliste( $c, 'verlags_id' => $vid );
+    my $vliste = $c->b_get_verlagsliste( 'verlags_id' => $vid );
 
     unless ( $vliste and scalar( @$vliste ) ) {
         $c->stash->{'template'} = 'error.tt2';
diff --git a/lib/FrBr/Books/Plugin/Verlag.pm b/lib/FrBr/Books/Plugin/Verlag.pm
new file mode 100644 (file)
index 0000000..937333c
--- /dev/null
@@ -0,0 +1,410 @@
+package FrBr::Books::Plugin::Verlag;
+
+# $Id$
+# $URL$
+
+use strict;
+use warnings;
+
+use Carp qw/croak/;
+use FrBr::Common;
+
+our $VERSION = '0.02';
+{
+    my ($rev) = '$Revision$' =~ /(\d+)/;
+    $VERSION = sprintf( $VERSION . ".%d", $rev );
+}
+
+#       &get_verlagsliste
+#       &save_verlag
+#              &delete_verlag
+
+=head1 NAME
+
+FrBr::Books::Plugin::Author - Plugin-Modul fuer Funktionen rund um Autoren
+
+=head1 METHODS
+
+=cut
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_get_verlagsliste( $params )
+
+Sammelt alle Verlage zusammen.
+
+Folgende benannte Parameter koennen ueber $params uebergeben werden:
+
+=over 4
+
+=item B<verlags_id>: Die ID eines konkreten Verlages
+
+=item B<get_books>: Bool. Zeigt an, daß zu den gefundenen Verlagen die dazugehörigen
+Bücher geholt werden sollen.
+
+=item B<page>
+
+Integer: Zeigt an, welche Seite von Verlagen dargestellt werden soll.
+
+Wenn nicht angegeben, werden alle Verlage zurückgegeben.
+
+=item B<list_length>
+
+Listenlänge einer Seite (wenn seitenweise gewünscht wird).
+
+=back
+
+Rueckgabe: Im skalaren Kontext eine Array-Ref von Hash-Refs mit allen Verlagen, die den uebergebenen Suchkriterien entsprechen:
+
+  $res = [
+       {
+               'id'                    => 7,
+               'name'                  => 'Heyne',
+               'name_long'             => 'Heyne-Verlag usw. GmbH & Co. KG',
+               'count_books'   => 22,
+               'books'         => [
+                 {
+                       'id'                 => 8,
+                       'title'              => 'Die Elfen',
+                       'title_original'     => undef,
+                       'untertitel'         => undef,
+                       'bindungsart_id'     => 4,
+                       'bindungsart'        => 'Softcover (Taschenbuch)',
+                       'orts_id'            => 2,
+                       'isbn'               => '3-453-53001-2',
+                       'buch_nr'            => undef,
+                       'ausgabejahr'        => '2004',
+                       'druckjahr'          => '2005',
+                       'seiten'             => 912,
+                       'preis'              => 14,
+                       'waehrungs_id'       => 1,
+                       'waehrungs_kuerzel'  => '€',
+                       'waehrungs_name'     => 'Euro',
+                       'umrechnung_in_euro' => 1,
+                       'ortsname'           => 'Flur - Glasvitrine',
+                       'ort_beschreibung'   => '',
+                       'ort_ist_statisch'   => 'n',
+                       'autoren'            => [ 'Bernhard Hennen', 'James Sullivan' ];
+                       'autor_ids'          => [ 10, 12 ];
+          },
+                 {
+                       'id'    => 22,
+                 },
+               ],
+       },
+       {
+               'id'                    => 2,
+               ...
+       },
+    ...
+  ];
+
+Die Liste ist nach den Verlags-Namen alphabetisch sortiert.
+
+Im Listenkontext wird als zweiter Rückgabewert die Gesamtzahl aller Verlage zurueckgegeben.
+
+=cut
+
+sub b_get_verlagsliste {
+
+    my $c = shift;
+    my $K = ( caller(0) )[3] . "(): ";
+
+    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+    my $params = {};
+    if ( ref($_[0]) and ref($_[0]) eq 'HASH' ) {
+        $params = $_[0];
+    }
+    else {
+        %$params = @_;
+    }
+    $c->log->debug(  get_output_string( $K, "Uebergebene Parameter: ", $params ) ) if $c->stash->{'debug_level'} >= 2;
+
+    my $list = [];
+       my $anzahl_verlage = 0;
+
+       my $page = to_int( $params->{'page'} ) ? to_int( $params->{'page'} ) : undef;
+       my $rows = to_int( $params->{'list_length'} ) ? to_int( $params->{'list_length'} ) : undef;
+    unless ( defined $rows ) {
+           $rows = $c->stash->{'list_length'} || 20 if defined $page;
+    }
+
+    my $search_params = undef;
+       if ( $params->{'verlags_id'} ) {
+               $search_params = {
+                       'me.id' => $params->{'verlags_id'},
+               };
+       }
+
+       $anzahl_verlage = $c->model('Schema::Verlage')->count( $search_params );
+    $c->log->debug(  get_output_string( $K, "Anzahl gefundene Verlage: ", $anzahl_verlage ) ) if $c->stash->{'debug_level'} >= 2;
+
+    my $other_params = {};
+    $other_params->{'order_by'} = [ 'name_short' ];
+    $other_params->{'select'} = [
+        'me.id',
+        'me.name_short',
+        'me.name_long',
+               { 'count' => 'buecher.id' }
+    ];
+    $other_params->{'as'} = [
+        'id',
+        'name_short',
+        'name_long',
+               'count_books',
+    ];
+       $other_params->{'join'} = [ 'buecher'];
+       $other_params->{'group_by'} = [ 'id' ];
+
+       if ( $page ) {
+               $other_params->{'rows'} = $rows;
+               $other_params->{'page'} = $page;
+       }
+    for my $verlag_rs ( $c->model('Schema::Verlage')->search( $search_params, $other_params )->all() ) {
+        my $verlag = {};
+        $verlag->{'id'}          = $verlag_rs->id();
+        $verlag->{'name'}        = $verlag_rs->name_short();
+        $verlag->{'name_long'}   = $verlag_rs->name_long();
+        $verlag->{'count_books'} = $verlag_rs->get_column('count_books');
+        push @$list, $verlag;
+    }
+
+    return ( wantarray ? ( $list, 0 ) : $list ) unless scalar @$list;
+    return ( wantarray ? ( $list, $anzahl_verlage ) : $list ) unless $params->{'get_books'};
+
+       for my $verlag ( @$list ) {
+
+               $verlag->{'books'} = [];
+
+               my $vid = $verlag->{'id'};
+               $search_params = {
+                       "verlags_id" => $vid,
+               };
+               $other_params = {};
+               $other_params->{'join'}     = [ 'waehrung', 'ort', 'bindungsart' ];
+               $other_params->{'select'} = [
+                       'me.id',
+                       'me.title',
+                       'me.title_original',
+                       'me.untertitel',
+                       'me.bindungsart_id',
+                       'bindungsart.art_name',
+                       'me.orts_id',
+                       'me.isbn',
+                       'me.buch_nr',
+                       'me.ausgabejahr',
+                       'me.druckjahr',
+                       'me.seiten',
+                       'me.preis',
+                       'me.waehrungs_id',
+                       'waehrung.waehrungs_kuerzel',
+                       'waehrung.waehrungs_name',
+                       'waehrung.umrechnung_in_euro',
+                       'ort.name',
+                       'ort.descr',
+                       'ort.statisch',
+               ];
+               $other_params->{'as'} = [
+                       'id',
+                       'title',
+                       'title_original',
+                       'untertitel',
+                       'bindungsart_id',
+                       'bindungsart',
+                       'orts_id',
+                       'isbn',
+                       'buch_nr',
+                       'ausgabejahr',
+                       'druckjahr',
+                       'seiten',
+                       'preis',
+                       'waehrungs_id',
+                       'waehrungs_kuerzel',
+                       'waehrungs_name',
+                       'umrechnung_in_euro',
+                       'ortsname',
+                       'ort_beschreibung',
+                       'ort_ist_statisch',
+               ];
+
+               for my $book ( $c->model('Schema::Buecher')->search( $search_params, $other_params )->all() ) {
+                       my $buch = {};
+                       $buch->{'id'}                 = $book->id();
+                       $buch->{'title'}              = $book->title();
+                       $buch->{'title_original'}     = $book->title_original();
+                       $buch->{'untertitel'}         = $book->untertitel();
+                       $buch->{'bindungsart_id'}     = $book->bindungsart_id();
+                       $buch->{'bindungsart'}        = $book->get_column('bindungsart');
+                       $buch->{'orts_id'}            = $book->orts_id();
+                       $buch->{'isbn'}               = $book->isbn();
+                       $buch->{'buch_nr'}            = $book->buch_nr();
+                       $buch->{'ausgabejahr'}        = $book->ausgabejahr();
+                       $buch->{'druckjahr'}          = $book->druckjahr();
+                       $buch->{'seiten'}             = $book->seiten();
+                       $buch->{'preis'}              = $book->preis();
+                       $buch->{'waehrungs_id'}       = $book->waehrungs_id();
+                       $buch->{'waehrungs_kuerzel'}  = $book->get_column('waehrungs_kuerzel');
+                       $buch->{'waehrungs_name'}     = $book->get_column('waehrungs_name');
+                       $buch->{'umrechnung_in_euro'} = $book->get_column('umrechnung_in_euro');
+                       $buch->{'ortsname'}           = $book->get_column('ortsname');
+                       $buch->{'ort_beschreibung'}   = $book->get_column('ort_beschreibung');
+                       $buch->{'ort_ist_statisch'}   = $book->get_column('ort_ist_statisch');
+                       $buch->{'autoren'}            = [];
+                       $buch->{'autor_ids'}          = [];
+
+                       my $a_search_params = {};
+                       $a_search_params->{'buch_id'} = $buch->{'id'};
+                       $other_params = {};
+                       $other_params->{'order_by'} = [ 'ord_num' ];
+                       $other_params->{'join'}     = [ 'autor' ];
+                       $other_params->{'select'} = [
+                               'me.buch_id',
+                               'autor.id',
+                               'autor.titel',
+                               'autor.vorname',
+                               'autor.mittelname',
+                               'autor.nachname',
+                               'autor.name_suffix',
+                       ];
+                       $other_params->{'as'} = [
+                               'buch_id',
+                               'autor_id',
+                               'titel',
+                               'vorname',
+                               'mittelname',
+                               'nachname',
+                               'name_suffix',
+                       ];
+                       for my $ref ( $c->model('Schema::Autor2buch')->search( $a_search_params, $other_params )->all() ) {
+                               my $aid = $ref->get_column('autor_id');
+                               my @N;
+                               push @N, $ref->get_column('titel') if $ref->get_column('titel');
+                               push @N, $ref->get_column('vorname') if $ref->get_column('vorname');
+                               push @N, $ref->get_column('mittelname') if $ref->get_column('mittelname');
+                               push @N, $ref->get_column('nachname');
+                               push @N, $ref->get_column('name_suffix') if $ref->get_column('name_suffix');
+                               my $autor = join( " ", @N );
+                               push @{ $buch->{'autoren'} },   $autor;
+                               push @{ $buch->{'autor_ids'} }, $aid;
+                       }
+
+                       push @{ $verlag->{'books'} }, $buch;
+
+               }
+
+       }
+
+    return ( wantarray ? ( $list, $anzahl_verlage ) : $list );
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_save_verlag( $verlag )
+
+=cut
+
+sub b_save_verlag {
+
+    my $c      = shift;
+    my $verlag = shift;
+    my $K = ( caller(0) )[3] . "(): ";
+
+    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+    my $storage = $c->model('Schema')->storage;
+
+    my $save_func = sub {
+        my ( $storage, $dbh, $verlags_id, $name_short, $name_long ) = @_;
+        $name_long = '' unless defined $name_long;
+        my $sql = <<ENDE;
+INSERT INTO `verlage` (
+    `id`, `name_short`, `name_long` )
+  VALUES (
+    ?, ?, ? )
+  ON DUPLICATE KEY UPDATE
+    `id` = LAST_INSERT_ID(`id`), `name_short` = ?, `name_long` = ?
+ENDE
+
+        if ( $storage->debug() ) {
+            my $text = $sql;
+            $text =~ s/\s+$//;
+            $text .= ": " . join( ", ", map { $dbh->quote($_) } ( $verlags_id, $name_short, $name_long, $name_short, $name_long ) ) . "\n";
+            warn $text;
+        }
+
+        my $sth = $dbh->prepare($sql);
+        $sth->execute( $verlags_id, $name_short, $name_long, $name_short, $name_long );
+    };
+
+    $storage->dbh_do( $save_func, $verlag->{'id'}, $verlag->{'name'}, $verlag->{'name_long'} );
+
+    return $storage->last_insert_id();
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_delete_verlag( $verlags_id )
+
+Loescht den Verlag mit der uebergebenen Verlags-Id
+
+=cut
+
+sub b_delete_verlag {
+
+    my $c          = shift;
+    my $verlags_id = shift;
+    my $K          = ( caller(0) )[3] . "(): ";
+
+    $c->log->debug( $K . "aufgerufen fuer Verlags-Id " . ( defined $verlags_id ? $verlags_id : '<undef>' ) . "." ) if $c->stash->{'debug_level'} > 2;
+
+    return undef unless $verlags_id and to_int($verlags_id);
+    $verlags_id = to_int($verlags_id);
+
+    my $schema =  $c->model('Schema')->{'schema'};
+
+       # Raus, wenn der Verlag noch Buecher hat ...
+       if ( $c->model('Schema::Buecher')->count( { 'verlags_id' => $verlags_id, } ) ) {
+               my $msg = 'Es existieren noch Buecher dieses Verlags.';
+               die $msg . "\n";
+       }
+
+       # Das eigentliche Löschen
+    my $coderef = sub {
+        $c->model('Schema::Verlage')->search( { 'id' => $verlags_id } )->delete();
+    };
+
+    my $rs;
+    eval {
+        $rs = $schema->txn_do($coderef);
+    };
+
+    if ($@) {                             # Transaction failed
+               my $msg = $@ =~ /Rollback failed/i ? "Rollback nicht erfolgreich!" : $@;
+               die $msg . "\n";
+               return undef;
+    }
+       return 1;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head1 AUTHOR
+
+Frank Brehm
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;
+
+__END__
+
+# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
diff --git a/lib/FrBr/Books/Util/Verlag.pm b/lib/FrBr/Books/Util/Verlag.pm
deleted file mode 100644 (file)
index 504ea85..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-package FrBr::Books::Util::Verlag;
-
-# $Id$
-# $URL$
-
-use strict;
-use warnings;
-
-use FrBr::Common;
-
-# Export-Deklarationen
-
-BEGIN {
-
-    use Exporter();
-    our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS );
-
-    # set the version for version checking
-    $VERSION = 0.1;
-    my ($rev) = '$Revision$' =~ /(\d+)/;
-    $VERSION = sprintf( $VERSION . ".%d", $rev );
-
-    @ISA    = qw(Exporter);
-    @EXPORT = qw(
-        &get_verlagsliste
-        &save_verlag
-               &delete_verlag
-    );
-
-    #%EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
-
-    # your exported package globals go here,
-    # as well as any optionally exported functions
-    #@EXPORT_OK   = qw($Var1 %Hashit &func3);
-} ## end BEGIN
-
-our @EXPORT_OK;
-
-=head1 NAME
-
-FrBr::Books::Util::Author - Modul fuer Funktionen rund um Autoren
-
-=head1 METHODS
-
-=cut
-
-#-----------------------------------------------------------------------------------
-
-=head2 get_verlagsliste( $c, $params )
-
-Sammelt alle Verlage zusammen.
-
-Folgende benannte Parameter koennen ueber $params uebergeben werden:
-
-=over 4
-
-=item B<verlags_id>: Die ID eines konkreten Verlages
-
-=item B<get_books>: Bool. Zeigt an, daß zu den gefundenen Verlagen die dazugehörigen
-Bücher geholt werden sollen.
-
-=item B<page>
-
-Integer: Zeigt an, welche Seite von Verlagen dargestellt werden soll.
-
-Wenn nicht angegeben, werden alle Verlage zurückgegeben.
-
-=back
-
-Rueckgabe: Im skalaren Kontext eine Array-Ref von Hash-Refs mit allen Verlagen, die den uebergebenen Suchkriterien entsprechen:
-
-  $res = [
-       {
-               'id'                    => 7,
-               'name'                  => 'Heyne',
-               'name_long'             => 'Heyne-Verlag usw. GmbH & Co. KG',
-               'count_books'   => 22,
-               'books'         => [
-                 {
-                       'id'                 => 8,
-                       'title'              => 'Die Elfen',
-                       'title_original'     => undef,
-                       'untertitel'         => undef,
-                       'bindungsart_id'     => 4,
-                       'bindungsart'        => 'Softcover (Taschenbuch)',
-                       'orts_id'            => 2,
-                       'isbn'               => '3-453-53001-2',
-                       'buch_nr'            => undef,
-                       'ausgabejahr'        => '2004',
-                       'druckjahr'          => '2005',
-                       'seiten'             => 912,
-                       'preis'              => 14,
-                       'waehrungs_id'       => 1,
-                       'waehrungs_kuerzel'  => '€',
-                       'waehrungs_name'     => 'Euro',
-                       'umrechnung_in_euro' => 1,
-                       'ortsname'           => 'Flur - Glasvitrine',
-                       'ort_beschreibung'   => '',
-                       'ort_ist_statisch'   => 'n',
-                       'autoren'            => [ 'Bernhard Hennen', 'James Sullivan' ];
-                       'autor_ids'          => [ 10, 12 ];
-          },
-                 {
-                       'id'    => 22,
-                 },
-               ],
-       },
-       {
-               'id'                    => 2,
-               ...
-       },
-    ...
-  ];
-
-Die Liste ist nach den Verlags-Namen alphabetisch sortiert.
-
-Im Listenkontext wird als zweiter Rückgabewert die Gesamtzahl aller Verlage zurueckgegeben.
-
-=cut
-
-sub get_verlagsliste {
-
-    my $c = shift;
-    my $K = ( caller(0) )[3] . "(): ";
-
-    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
-
-    my $params = {};
-    if ( ref($_[0]) and ref($_[0]) eq 'HASH' ) {
-        $params = $_[0];
-    }
-    else {
-        %$params = @_;
-    }
-    $c->log->debug(  get_output_string( $K, "Uebergebene Parameter: ", $params ) ) if $c->stash->{'debug_level'} >= 2;
-
-    my $list = [];
-       my $anzahl_verlage = 0;
-
-       my $page = to_int( $params->{'page'} ) ? to_int( $params->{'page'} ) : undef;
-       my $rows = undef;
-       $rows = $c->stash->{'list_length'} || 20 if defined $page;
-
-    my $search_params = undef;
-       if ( $params->{'verlags_id'} ) {
-               $search_params = {
-                       'me.id' => $params->{'verlags_id'},
-               };
-       }
-
-       $anzahl_verlage = $c->model('Schema::Verlage')->count( $search_params );
-    $c->log->debug(  get_output_string( $K, "Anzahl gefundene Verlage: ", $anzahl_verlage ) ) if $c->stash->{'debug_level'} >= 2;
-
-    my $other_params = {};
-    $other_params->{'order_by'} = [ 'name_short' ];
-    $other_params->{'select'} = [
-        'me.id',
-        'me.name_short',
-        'me.name_long',
-               { 'count' => 'buecher.id' }
-    ];
-    $other_params->{'as'} = [
-        'id',
-        'name_short',
-        'name_long',
-               'count_books',
-    ];
-       $other_params->{'join'} = [ 'buecher'];
-       $other_params->{'group_by'} = [ 'id' ];
-
-       if ( $page ) {
-               $other_params->{'rows'} = $rows;
-               $other_params->{'page'} = $page;
-       }
-    for my $verlag_rs ( $c->model('Schema::Verlage')->search( $search_params, $other_params )->all() ) {
-        my $verlag = {};
-        $verlag->{'id'}          = $verlag_rs->id();
-        $verlag->{'name'}        = $verlag_rs->name_short();
-        $verlag->{'name_long'}   = $verlag_rs->name_long();
-        $verlag->{'count_books'} = $verlag_rs->get_column('count_books');
-        push @$list, $verlag;
-    }
-
-    return ( wantarray ? ( $list, 0 ) : $list ) unless scalar @$list;
-    return ( wantarray ? ( $list, $anzahl_verlage ) : $list ) unless $params->{'get_books'};
-
-       for my $verlag ( @$list ) {
-
-               $verlag->{'books'} = [];
-
-               my $vid = $verlag->{'id'};
-               $search_params = {
-                       "verlags_id" => $vid,
-               };
-               $other_params = {};
-               $other_params->{'join'}     = [ 'waehrung', 'ort', 'bindungsart' ];
-               $other_params->{'select'} = [
-                       'me.id',
-                       'me.title',
-                       'me.title_original',
-                       'me.untertitel',
-                       'me.bindungsart_id',
-                       'bindungsart.art_name',
-                       'me.orts_id',
-                       'me.isbn',
-                       'me.buch_nr',
-                       'me.ausgabejahr',
-                       'me.druckjahr',
-                       'me.seiten',
-                       'me.preis',
-                       'me.waehrungs_id',
-                       'waehrung.waehrungs_kuerzel',
-                       'waehrung.waehrungs_name',
-                       'waehrung.umrechnung_in_euro',
-                       'ort.name',
-                       'ort.descr',
-                       'ort.statisch',
-               ];
-               $other_params->{'as'} = [
-                       'id',
-                       'title',
-                       'title_original',
-                       'untertitel',
-                       'bindungsart_id',
-                       'bindungsart',
-                       'orts_id',
-                       'isbn',
-                       'buch_nr',
-                       'ausgabejahr',
-                       'druckjahr',
-                       'seiten',
-                       'preis',
-                       'waehrungs_id',
-                       'waehrungs_kuerzel',
-                       'waehrungs_name',
-                       'umrechnung_in_euro',
-                       'ortsname',
-                       'ort_beschreibung',
-                       'ort_ist_statisch',
-               ];
-
-               for my $book ( $c->model('Schema::Buecher')->search( $search_params, $other_params )->all() ) {
-                       my $buch = {};
-                       $buch->{'id'}                 = $book->id();
-                       $buch->{'title'}              = $book->title();
-                       $buch->{'title_original'}     = $book->title_original();
-                       $buch->{'untertitel'}         = $book->untertitel();
-                       $buch->{'bindungsart_id'}     = $book->bindungsart_id();
-                       $buch->{'bindungsart'}        = $book->get_column('bindungsart');
-                       $buch->{'orts_id'}            = $book->orts_id();
-                       $buch->{'isbn'}               = $book->isbn();
-                       $buch->{'buch_nr'}            = $book->buch_nr();
-                       $buch->{'ausgabejahr'}        = $book->ausgabejahr();
-                       $buch->{'druckjahr'}          = $book->druckjahr();
-                       $buch->{'seiten'}             = $book->seiten();
-                       $buch->{'preis'}              = $book->preis();
-                       $buch->{'waehrungs_id'}       = $book->waehrungs_id();
-                       $buch->{'waehrungs_kuerzel'}  = $book->get_column('waehrungs_kuerzel');
-                       $buch->{'waehrungs_name'}     = $book->get_column('waehrungs_name');
-                       $buch->{'umrechnung_in_euro'} = $book->get_column('umrechnung_in_euro');
-                       $buch->{'ortsname'}           = $book->get_column('ortsname');
-                       $buch->{'ort_beschreibung'}   = $book->get_column('ort_beschreibung');
-                       $buch->{'ort_ist_statisch'}   = $book->get_column('ort_ist_statisch');
-                       $buch->{'autoren'}            = [];
-                       $buch->{'autor_ids'}          = [];
-
-                       my $a_search_params = {};
-                       $a_search_params->{'buch_id'} = $buch->{'id'};
-                       $other_params = {};
-                       $other_params->{'order_by'} = [ 'ord_num' ];
-                       $other_params->{'join'}     = [ 'autor' ];
-                       $other_params->{'select'} = [
-                               'me.buch_id',
-                               'autor.id',
-                               'autor.titel',
-                               'autor.vorname',
-                               'autor.mittelname',
-                               'autor.nachname',
-                               'autor.name_suffix',
-                       ];
-                       $other_params->{'as'} = [
-                               'buch_id',
-                               'autor_id',
-                               'titel',
-                               'vorname',
-                               'mittelname',
-                               'nachname',
-                               'name_suffix',
-                       ];
-                       for my $ref ( $c->model('Schema::Autor2buch')->search( $a_search_params, $other_params )->all() ) {
-                               my $aid = $ref->get_column('autor_id');
-                               my @N;
-                               push @N, $ref->get_column('titel') if $ref->get_column('titel');
-                               push @N, $ref->get_column('vorname') if $ref->get_column('vorname');
-                               push @N, $ref->get_column('mittelname') if $ref->get_column('mittelname');
-                               push @N, $ref->get_column('nachname');
-                               push @N, $ref->get_column('name_suffix') if $ref->get_column('name_suffix');
-                               my $autor = join( " ", @N );
-                               push @{ $buch->{'autoren'} },   $autor;
-                               push @{ $buch->{'autor_ids'} }, $aid;
-                       }
-
-                       push @{ $verlag->{'books'} }, $buch;
-
-               }
-
-       }
-
-    return ( wantarray ? ( $list, $anzahl_verlage ) : $list );
-}
-
-#-----------------------------------------------------------------------------------
-
-=head2 save_verlag( $c, $verlag )
-
-=cut
-
-sub save_verlag {
-
-    my $c      = shift;
-    my $verlag = shift;
-    my $K      = __PACKAGE__ . "::save_verlag(): ";
-
-    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
-
-    my $storage = $c->stash->{'storage'};
-
-    my $save_func = sub {
-        my ( $storage, $dbh, $verlags_id, $name_short, $name_long ) = @_;
-        $name_long = '' unless defined $name_long;
-        my $sql = <<ENDE;
-INSERT INTO `verlage` (
-    `id`, `name_short`, `name_long` )
-  VALUES (
-    ?, ?, ? )
-  ON DUPLICATE KEY UPDATE
-    `id` = LAST_INSERT_ID(`id`), `name_short` = ?, `name_long` = ?
-ENDE
-
-        if ( $storage->debug() ) {
-            my $text = $sql;
-            $text =~ s/\s+$//;
-            $text .= ": " . join( ", ", map { $dbh->quote($_) } ( $verlags_id, $name_short, $name_long, $name_short, $name_long ) ) . "\n";
-            warn $text;
-        }
-
-        my $sth = $dbh->prepare($sql);
-        $sth->execute( $verlags_id, $name_short, $name_long, $name_short, $name_long );
-    };
-
-    $storage->dbh_do( $save_func, $verlag->{'id'}, $verlag->{'name'}, $verlag->{'name_long'} );
-
-    return $storage->last_insert_id();
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head2 delete_verlag( $c, $verlags_id )
-
-Loescht den Verlag mit der uebergebenen Verlags-Id
-
-=cut
-
-sub delete_verlag {
-
-    my $c          = shift;
-    my $verlags_id = shift;
-    my $K          = ( caller(0) )[3] . "(): ";
-
-    $c->log->debug( $K . "aufgerufen fuer Verlags-Id " . ( defined $verlags_id ? $verlags_id : '<undef>' ) . "." ) if $c->stash->{'debug_level'} > 2;
-
-    return undef unless $verlags_id and to_int($verlags_id);
-    $verlags_id = to_int($verlags_id);
-
-    my $schema =  $c->model('Schema')->{'schema'};
-
-       # Raus, wenn der Verlag noch Buecher hat ...
-       if ( $c->model('Schema::Buecher')->count( { 'verlags_id' => $verlags_id, } ) ) {
-               my $msg = 'Es existieren noch Buecher dieses Verlags.';
-               die $msg . "\n";
-       }
-
-       # Das eigentliche Löschen
-    my $coderef = sub {
-        $c->model('Schema::Verlage')->search( { 'id' => $verlags_id } )->delete();
-    };
-
-    my $rs;
-    eval {
-        $rs = $schema->txn_do($coderef);
-    };
-
-    if ($@) {                             # Transaction failed
-               my $msg = $@ =~ /Rollback failed/i ? "Rollback nicht erfolgreich!" : $@;
-               die $msg . "\n";
-               return undef;
-    }
-       return 1;
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head1 AUTHOR
-
-Frank Brehm
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-
-1;
-
-__END__
-
-# vim: noai : ts=4 fenc=utf-8 filetype=perl