RaiseError => 1,
ReadOnly => 1,
%$opts);
- $DB = DBI->connect("dbi:Pg:host=roadstar", "", "", \%opts);
+ $DB = DBI->connect("dbi:Pg:host=roadstar;dbname=mdw", "", "", \%opts);
}
sub must_exist ($$@) {
my $st_del = $DB->prepare
("DELETE FROM playlist_position WHERE group_name = ? AND list_name = ?");
- for my $op (@ops) {
+ OP: for my $op (@ops) {
if ($op =~ /^ - (.++) $/x) {
my ($list) = ($1);
must_list $list; must_member $group, $list;
@r or die "`$list' is not a member of `$group'";
my ($cur) = @r; $st_getpos->finish;
- if ($rel eq "+") { $pos = $cur + $pos; }
- elsif ($rel eq "-") { $pos = $cur - $pos; }
+ my $end;
+ if ($rel eq "+") { $pos = $cur + $pos; $end = $n; }
+ elsif ($rel eq "-") { $pos = $cur - $pos; $end = 0; }
+ if ($pos == $end) { $st_del->execute($group, $list); next OP; }
}
0 <= $pos && $pos < $n
or die "`$list' position $pos out of range 0 .. $n";
defined $prevlist and print "$prevlist\n", map "\t$_\n", @out;
};
-defcmd "list LIST", sub {
+defcmd "list [-g [MARK=]GROUP,...] [-r [LO][-[HI]]] LIST", sub {
local @ARGV = @_;
my $bogusp = 0;
my %opt;