diff options
Diffstat (limited to 'lib/Bookmarks/M/DB/Tags.pm')
-rw-r--r-- | lib/Bookmarks/M/DB/Tags.pm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/Bookmarks/M/DB/Tags.pm b/lib/Bookmarks/M/DB/Tags.pm index 3011510..e9057a8 100644 --- a/lib/Bookmarks/M/DB/Tags.pm +++ b/lib/Bookmarks/M/DB/Tags.pm @@ -2,6 +2,38 @@ package Bookmarks::M::DB::Tags; use strict; +__PACKAGE__->has_many( links => [Bookmarks::M::DB::LinkTags => '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 +ORDER BY how_many +END_SQL + +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(); +} + =head1 NAME Bookmarks::M::DB::Tags - CDBI Model Component Table Class |