Playlist support, other randomness.
[dvddb] / update
diff --git a/update b/update
index 0fadbcd..b2b60d8 100755 (executable)
--- a/update
+++ b/update
@@ -16,27 +16,27 @@ my $DB = DBI->connect("dbi:Pg:host=roadstar", "", "",
                      { AutoCommit => 0,
                        RaiseError => 1 });
 
-my $st_get_set = $DB->prepare("SELECT name, ndisc FROM dvd_set
-                              WHERE id = ?");
-my $st_add_set = $DB->prepare("INSERT INTO dvd_set (name, ndisc)
-                              VALUES (?, ?)
-                              RETURNING id");
-my $st_update_set = $DB->prepare("UPDATE dvd_set
-                                 SET name = ?, ndisc = ?
-                                 WHERE id = ?");
+my $st_get_set = $DB->prepare
+  ("SELECT name, n_disc FROM dvd_set WHERE id = ?");
+my $st_add_set = $DB->prepare
+  ("INSERT INTO dvd_set (name, n_disc) VALUES (?, ?) RETURNING id");
+my $st_update_set = $DB->prepare
+  ("UPDATE dvd_set SET name = ?, n_disc = ? WHERE id = ?");
 my $st_delete_set = $DB->prepare("DELETE FROM dvd_set WHERE id = ?");
 
-my $st_get_discs = $DB->prepare("SELECT disc, path FROM dvd_disc
-                                WHERE set_id = ? AND ? <= disc AND disc < ?
-                                ORDER BY disc");
-my $st_add_disc = $DB->prepare("INSERT INTO dvd_disc (set_id, disc, path)
-                               VALUES (?, ?, ?)");
-my $st_update_disc = $DB->prepare("UPDATE dvd_disc SET path = ?
-                                  WHERE set_id = ? AND disc = ?");
-my $st_delete_disc_range = $DB->prepare("DELETE FROM dvd_disc
-                                        WHERE set_id = ? AND
-                                          ? <= disc AND disc < ?");
-my $st_delete_discs = $DB->prepare("DELETE FROM dvd_disc WHERE set_id = ?");
+my $st_get_discs = $DB->prepare
+  ("SELECT disc, path FROM dvd_disc
+    WHERE set_id = ? AND ? <= disc AND disc < ?
+    ORDER BY disc");
+my $st_add_disc = $DB->prepare
+  ("INSERT INTO dvd_disc (set_id, disc, path) VALUES (?, ?, ?)");
+my $st_update_disc = $DB->prepare
+  ("UPDATE dvd_disc SET path = ?, disc_id = NULL
+    WHERE set_id = ? AND disc = ?");
+my $st_delete_disc_range = $DB->prepare
+  ("DELETE FROM dvd_disc WHERE set_id = ? AND ? <= disc AND disc < ?");
+my $st_delete_discs = $DB->prepare
+  ("DELETE FROM dvd_disc WHERE set_id = ?");
 
 my ($id, $name, $ndisc) = (undef, undef, -1);
 my @path;
@@ -108,14 +108,9 @@ LINE: while (<>) {
     } else {
       defined $name or die "missing name";
     }
-  } elsif (/^ \s+ !! \s* (\S .*) $/x) {
+  } elsif (/^ \s+ (?: !! \s*)? (\S .*) $/x) {
     my $path = $1;
     defined $id or die "no active set";
-    push @path, undef;
-  } elsif (/^ \s+ (\S .*) $/x) {
-    my $path = $1;
-    defined $id or die "no active set";
-    -f "$ROOT/$path" && ! -l "$ROOT/$path" or die "file `$path' not found";
     push @path, $path;
   } elsif (/^ .* \S .* $/) {
     die "unrecognized line `$_'";