filter constraint ids, drop undefs
[id3fs.git] / lib / ID3FS / DB.pm
index 0c344d9..8794ca1 100644 (file)
@@ -160,7 +160,7 @@ sub tags
        my $cid=$constraint->{id};
        push(@ids, $cid);
     }
-    @ids = map( { "\"$_\""; } @ids) unless($self->{postgres});
+    @ids = map( { "\"$_\""; } grep { defined; } @ids) unless($self->{postgres});
     my $tagstr=join(", ", @ids);
     my $sql = ($main_sql_start . $tagstr .
               $main_sql_mid   . $tagstr .
@@ -207,7 +207,7 @@ sub artists
        my $cid=$constraint->{id};
        push(@ids, $cid);
     }
-    @ids = map( { "\"$_\""; } @ids) unless($self->{postgres});
+    @ids = map( { "\"$_\""; } grep { defined; } @ids) unless($self->{postgres});
     my $tagstr=join(", ", @ids);
     my $sql = ($main_sql_start . $tagstr .
               $main_sql_end);
@@ -240,7 +240,7 @@ sub albums
        my $cid=$constraint->{id};
        push(@ids, $cid);
     }
-    @ids = map( { "\"$_\""; } @ids) unless($self->{postgres});
+    @ids = map( { "\"$_\""; } grep { defined; } @ids) unless($self->{postgres});
     my $str=join(", ", @ids);
     my $sql = ($main_sql_start . $str .
               $main_sql_end);
@@ -330,7 +330,7 @@ sub tracks
        my $cid=$constraint->{id};
        push(@ids, $cid);
     }
-    @ids = map( { "\"$_\""; } @ids) unless($self->{postgres});
+    @ids = map( { "\"$_\""; } grep { defined; } @ids) unless($self->{postgres});
     my $str=join(", ", @ids);
     my $sql = ($main_sql_start . $str .
               $main_sql_end);
@@ -583,13 +583,13 @@ CREATE TABLE albums (
 
 CREATE TABLE files (
     id INTEGER PRIMARY KEY,
+    name text,
     artists_id,
     albums_id,
     paths_id,
-    name text,
-    FOREIGN KEY(artists_id) REFERENCES artists(id),
-    FOREIGN KEY(albums_id)  REFERENCES albums(id),
-    FOREIGN KEY(paths_id)   REFERENCES paths(id)
+    FOREIGN KEY(artists_id) REFERENCES artists(id) ON DELETE CASCADE ON UPDATE CASCADE,
+    FOREIGN KEY(albums_id)  REFERENCES albums(id)  ON DELETE CASCADE ON UPDATE CASCADE,
+    FOREIGN KEY(paths_id)   REFERENCES paths(id)   ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE tags (
@@ -605,13 +605,13 @@ CREATE TABLE tagvals (
 CREATE TABLE files_x_tags (
     files_id INTEGER,
     tags_id INTEGER,
-    FOREIGN KEY(files_id) REFERENCES files(id),
-    FOREIGN KEY(tags_id) REFERENCES tags(id)
+    FOREIGN KEY(files_id) REFERENCES files(id) ON DELETE CASCADE ON UPDATE CASCADE,
+    FOREIGN KEY(tags_id)  REFERENCES tags(id)  ON DELETE CASCADE ON UPDATE CASCADE
 );
 
 CREATE TABLE tags_x_tagvals (
     tags_id INTEGER,
     tagvals_id INTEGER,
-    FOREIGN KEY(tags_id) REFERENCES tags(id),
-    FOREIGN KEY(tagvals_id) REFERENCES tagvals(id)
+    FOREIGN KEY(tags_id) REFERENCES tags(id) ON DELETE CASCADE ON UPDATE CASCADE,
+    FOREIGN KEY(tagvals_id) REFERENCES tagvals(id) ON DELETE CASCADE ON UPDATE CASCADE
 );