implement id3fs-index -l
[id3fs.git] / lib / ID3FS / DB.pm
index 8794ca1..dd467c7 100644 (file)
@@ -359,6 +359,34 @@ sub filename
     die("DB::filename: unhandled case\n"); #FIXME
 }
 
+sub bare_tags
+{
+    my($self)=@_;
+    my $sql=("SELECT tags.name FROM tags\n" .
+            "LEFT JOIN tags_x_tagvals ON tags.id=tags_x_tagvals.tags_id\n" .
+            "WHERE tags_x_tagvals.tags_id IS NULL\n" .
+            "GROUP BY tags.name\n");
+    my $result=$self->cmd_rows($sql);
+    my @names=map { $_->[0]; } @$result;
+    return (@names);
+}
+
+sub tags_with_values
+{
+    my($self)=@_;
+    my $sql=("SELECT tags.name, tagvals.name FROM tags\n" .
+            "INNER JOIN tags_x_tagvals ON tags.id=tags_x_tagvals.tags_id\n" .
+            "INNER JOIN tagvals ON tagvals.id=tags_x_tagvals.tagvals_id\n" .
+            "GROUP BY tags.name, tagvals.name\n");
+    my $result=$self->cmd_rows($sql);
+    my $tags={};
+    for my $pair (@$result)
+    {
+       push(@{$tags->{$pair->[0]}}, $pair->[1]);
+    }
+    return $tags;
+}
+
 sub id
 {
     my($self, $type, $val)=@_;