my $base=undef;
for my $dir (@dirs)
{
- my $path=Cwd::abs_path($dir);
+# my $path=Cwd::abs_path($dir);
+ my $path=$dir;
do
{
$base=$path;
sub bare_tags
{
my($self)=@_;
- my $sql=("SELECT tags.name FROM tags\n" .
- "WHERE tags.parents_id=''\n" .
- "GROUP BY tags.name\n");
+ my $sql=("SELECT t1.name FROM tags t1\n" .
+ "LEFT JOIN tags t2 on t1.id=t2.parents_id\n" .
+ "WHERE t1.parents_id='' AND t2.id IS NULL\n" .
+ "GROUP BY t1.name\n");
my @names=$self->cmd_firstcol($sql);
return (@names);
}
{ "artists_id" => $artist_id,
"albums_id" => $albums_id,
"paths_id" => $path_id });
+
+ $self->remove_tag_refs($file_id);
if(@tags)
{
for my $tag (@tags)
$self->cmd($sql, map { $fields->{$_}; } sort keys(%$fields));
}
+# remove existing files_x_tags relations before reindexing
+sub remove_tag_refs
+{
+ my ($self, $id)=@_;
+ my $sql="DELETE FROM files_x_tags WHERE files_id=?\n";
+ return($self->cmd($sql, $id));
+}
+
sub files_in
{
my ($self, $dir)=@_;
sub prune_directories
{
- my($self)=@_;
+ my($self,@includepaths)=@_;
my $sql=("SELECT name, id FROM paths\n");
my $pathsref=$self->cmd_rows($sql);
my @ids=();
for my $pathpair (@$pathsref)
{
my($path, $id)=@$pathpair;
+ my $relpath = $self->{base} . "/" . $path;
+ next unless(grep { $relpath =~ /^$_/; } @includepaths);
my $fullpath="$self->{absbase}/$path";
unless(-d $fullpath)
{