X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FID3FS%2FDB.pm;h=99c482070f06ee9dbb2d3af331a7d084189a3ddc;hb=bb635a70f6dd0315876ee7862ed71e9e093cd3fd;hp=30510fe93160e02bb609dd3ea263cd2076619e57;hpb=a1b0cc1f04007f1e5d8c135096e59787d478b07c;p=id3fs.git diff --git a/lib/ID3FS/DB.pm b/lib/ID3FS/DB.pm index 30510fe..99c4820 100644 --- a/lib/ID3FS/DB.pm +++ b/lib/ID3FS/DB.pm @@ -169,13 +169,16 @@ sub tags sub tag_values { - my($self, $tag)=@_; - my $sql=("SELECT DISTINCT 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" . - "WHERE tags.name=?"); - my $tags=$self->cmd_rows($sql, $tag); - return(map { $_->[0]; } @$tags); + my($self, $tagid)=@_; + my $sql=("SELECT DISTINCT tagvals.name FROM tagvals\n" . + "INNER JOIN tags_x_tagvals ON tagvals.id=tags_x_tagvals.tagvals_id\n" . + "WHERE tags_x_tagvals.tags_id=?"); + my $tags=$self->cmd_rows($sql, $tagid); + my @tags=map { $_->[0]; } @$tags; + # FIXME: handle when indexing, not here + @tags=map { s/[^[:print:]]//g; $_; } @tags; + @tags=map { length($_) ? $_ : "NOVALUE"; } @tags; + return @tags; } sub artists @@ -483,6 +486,17 @@ sub lookup_id return $id; } +sub tag_has_values +{ + my($self, $id)=@_; + my $sql=("SELECT COUNT(*) FROM tags\n\t" . + "INNER JOIN tags_x_tagvals ON tags.id=tags_x_tagvals.tags_id\n\t" . + "INNER JOIN tagvals ON tagvals.id=tags_x_tagvals.tagvals_id\n\t" . + "WHERE tags.id=?\n"); + my ($rows)=$self->cmd_onerow($sql, $id); + return $rows; +} + sub relation_exists { my ($self, $relname, $fields)=@_;