tags hierarchy schema change: change add
[id3fs.git] / lib / ID3FS / DB.pm
index 07a5f86..17e215c 100644 (file)
@@ -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
 );