package Bookmarks::M::DB::Tags;
use strict;
__PACKAGE__->has_many( links => ['Bookmarks::M::DB::LinksTags' => 'link'] );
__PACKAGE__->set_sql('related_tags', <<'END_SQL');
SELECT tags.pk
FROM tags, links_tags lt1, links_tags lt2
WHERE tags.pk = lt1.tag
AND lt2.link = lt2.link
AND lt2.tag = ?
END_SQL
__PACKAGE__->set_sql('popularity', <<'END_SQL');
SELECT tags.pk, COUNT(links_tags.link) AS how_many
FROM tags, links_tags
WHERE tags.pk = links_tags.tag
GROUP BY links_tags.tag
ORDER BY how_many DESC
END_SQL
__PACKAGE__->columns(TEMP=> 'how_wany');
sub count_links {
my ($self)=@_;
return scalar $self->links();
}
sub related_tags {
my ($self)=@_;
return $self->search_related_tags($self->pk());
}
sub get_all_tags_by_popularity {
return $_[0]->search_popularity();
}
sub ordered_links {
my ($self)=@_;
my @links=$self->links();
return sort {$a->access_count <=> $b->access_count} @links;
}
1;