X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FID3FS%2FDB.pm;h=17e215c454a1d5e7026e0738c9b9a27adec6bf3c;hb=b21a945bddb2174e437d0549956c0bfa9f7bbe73;hp=07a5f863a8e1eec918c731deed37fbd2d1e23d6a;hpb=d2b54433e560a84120e89cd6881799889a590b34;p=id3fs.git diff --git a/lib/ID3FS/DB.pm b/lib/ID3FS/DB.pm index 07a5f86..17e215c 100644 --- a/lib/ID3FS/DB.pm +++ b/lib/ID3FS/DB.pm @@ -524,7 +524,7 @@ sub add my $v1genre=$file->v1genre(); my $year=$file->year(); my $audiotype=$file->audiotype(); - my $tags=$file->tags(); + my @tags=$file->tags(); my $haspic=$file->haspic(); $artist=undef unless($self->ok($artist)); @@ -542,9 +542,9 @@ sub add { "artists_id" => $artist_id, "albums_id" => $albums_id, "paths_id" => $path_id }); - for my $tag (keys %$tags) + for my $tag (@tags) { - $self->add_tag($file_id, $tag, $tags->{$tag}); + $self->add_tag($file_id, @$tag); } if($self->ok($year)) @@ -569,17 +569,16 @@ sub add sub add_tag { - my($self, $file_id, $tag, $val)=@_; - my $tag_id=$self->add_to_table("tags", $tag); - $self->add_relation("files_x_tags", - { "files_id" => $file_id, - "tags_id" => $tag_id }); - if(defined($val)) + my($self, $file_id, @tags)=@_; + my $parent_id=undef; + for my $tag (@tags) { - my $val_id=$self->add_to_table("tagvals", $val); - $self->add_relation("tags_x_tagvals", - { "tags_id" => $tag_id, - "tagvals_id" => $val_id }); + my $tag_id=$self->add_to_table("tags", $tag, + { "parents_id" => $parent_id }); + $self->add_relation("files_x_tags", + { "files_id" => $file_id, + "tags_id" => $tag_id }); + $parent_id=$tag_id; } } @@ -819,6 +818,7 @@ CREATE TABLE files ( CREATE TABLE tags ( id INTEGER PRIMARY KEY, + parents_id INTEGER, name text );