]> Frank Brehm's Git Trees - books.git/commitdiff
Mit Verlagen weitergemacht
authorFrank Brehm <frank@brehm-online.com>
Fri, 4 Apr 2008 14:14:08 +0000 (14:14 +0000)
committerFrank Brehm <frank@brehm-online.com>
Fri, 4 Apr 2008 14:14:08 +0000 (14:14 +0000)
lib/FrBr/Books/Util/Author.pm
lib/FrBr/Books/Util/Verlag.pm

index 4e2655c6f879d8898ba3099b7269ca2d018bc91f..de295ff1f1728f906d031b538ca69a8d6faee833 100644 (file)
@@ -137,7 +137,7 @@ INSERT INTO `autoren` (
   VALUES (
     ?, ?, ? )
   ON DUPLICATE KEY UPDATE
-    `autor_name` = ?, `autor_descr` = ?
+    `id` = LAST_INSERT_ID(`id`), `autor_name` = ?, `autor_descr` = ?
 ENDE
 
         if ( $storage->debug() ) {
index 41e7d181141727ab214493778981ac2344d8b410..c6d306cf58cb1376cd1f738683e49303c231eec9 100644 (file)
@@ -23,6 +23,7 @@ BEGIN {
     @ISA    = qw(Exporter);
     @EXPORT = qw(
         &get_verlagsliste
+        &save_verlag
     );
 
     #%EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
@@ -113,6 +114,51 @@ sub get_verlagsliste {
 
 #-----------------------------------------------------------------------------------
 
+=head2 save_verlag( $c, $verlag )
+
+=cut
+
+sub save_verlag {
+
+    my $c     = shift;
+    my $autor = 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->{'desc'} );
+
+    return $storage->last_insert_id();
+
+}
+
+#-----------------------------------------------------------------------------------
+
 =head1 AUTHOR
 
 Frank Brehm