summaryrefslogtreecommitdiff
path: root/lib/Bookmarks/M/DB/Tags.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bookmarks/M/DB/Tags.pm')
-rw-r--r--lib/Bookmarks/M/DB/Tags.pm32
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