summaryrefslogtreecommitdiff
path: root/lib/Bookmarks/M/DB
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bookmarks/M/DB')
-rw-r--r--lib/Bookmarks/M/DB/Links.pm8
-rw-r--r--lib/Bookmarks/M/DB/Tags.pm17
2 files changed, 18 insertions, 7 deletions
diff --git a/lib/Bookmarks/M/DB/Links.pm b/lib/Bookmarks/M/DB/Links.pm
index 851d9a3..3ae761d 100644
--- a/lib/Bookmarks/M/DB/Links.pm
+++ b/lib/Bookmarks/M/DB/Links.pm
@@ -1,15 +1,17 @@
package Bookmarks::M::DB::Links;
-
use strict;
+use DBI;
for my $col_name (qw(add_date last_access_date)) {
__PACKAGE__->has_a( $col_name => 'DateTime',
- inflate => sub { DateTime->from_epoch( epoch => $_ ) },
+ inflate => sub { DateTime->from_epoch( epoch => $_[0] ) },
deflate => 'epoch',
);
}
-__PACKAGE__->has_many( tags => [Bookmarks::M::DB::LinkTags => 'tag'] );
+__PACKAGE__->has_many( tags => ['Bookmarks::M::DB::LinksTags' => 'tag'] );
+
+__PACKAGE__->data_type( icon => DBI::SQL_BINARY );
=head1 NAME
diff --git a/lib/Bookmarks/M/DB/Tags.pm b/lib/Bookmarks/M/DB/Tags.pm
index e9057a8..c1e1f0b 100644
--- a/lib/Bookmarks/M/DB/Tags.pm
+++ b/lib/Bookmarks/M/DB/Tags.pm
@@ -2,9 +2,9 @@ package Bookmarks::M::DB::Tags;
use strict;
-__PACKAGE__->has_many( links => [Bookmarks::M::DB::LinkTags => 'link'] );
+__PACKAGE__->has_many( links => ['Bookmarks::M::DB::LinksTags' => 'link'] );
-__PACKAGE__->set_sql('related_tags' <<'END_SQL');
+__PACKAGE__->set_sql('related_tags', <<'END_SQL');
SELECT tags.pk
FROM tags, links_tags lt1, links_tags lt2
WHERE tags.pk = lt1.tag
@@ -12,13 +12,16 @@ SELECT tags.pk
AND lt2.tag = ?
END_SQL
-__PACKAGE__->set_sql('popularity' <<'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
+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();
@@ -34,6 +37,12 @@ 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;
+}
+
=head1 NAME
Bookmarks::M::DB::Tags - CDBI Model Component Table Class