summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2005-10-19 19:34:59 +0000
committerdakkar <dakkar@luxion>2005-10-19 19:34:59 +0000
commit45d560a6dc56462a4338e90a8174a02a0a00302d (patch)
treec92f6831288bed4074674722eec4548566b399c5
parentfatto il db (diff)
downloadBookmarks-45d560a6dc56462a4338e90a8174a02a0a00302d.tar.gz
Bookmarks-45d560a6dc56462a4338e90a8174a02a0a00302d.tar.bz2
Bookmarks-45d560a6dc56462a4338e90a8174a02a0a00302d.zip
relazioni, e inizio lavori
-rw-r--r--lib/Bookmarks.pm2
-rw-r--r--lib/Bookmarks/C/Main.pm8
-rw-r--r--lib/Bookmarks/M/DB.pm11
-rw-r--r--lib/Bookmarks/M/DB/Links.pm9
-rw-r--r--lib/Bookmarks/M/DB/LinksTags.pm3
-rw-r--r--lib/Bookmarks/M/DB/Tags.pm32
6 files changed, 61 insertions, 4 deletions
diff --git a/lib/Bookmarks.pm b/lib/Bookmarks.pm
index f81ec80..fb270bd 100644
--- a/lib/Bookmarks.pm
+++ b/lib/Bookmarks.pm
@@ -1,7 +1,7 @@
package Bookmarks;
use strict;
-use Catalyst qw/-Debug Prototype/;
+use Catalyst qw/-Debug Prototype DefaultEnd/;
our $VERSION = '0.01';
diff --git a/lib/Bookmarks/C/Main.pm b/lib/Bookmarks/C/Main.pm
index 63744c1..7182a9e 100644
--- a/lib/Bookmarks/C/Main.pm
+++ b/lib/Bookmarks/C/Main.pm
@@ -25,7 +25,13 @@ Catalyst component.
sub default : Private {
my ( $self, $c ) = @_;
- $c->res->output('Congratulations, Bookmarks::C::Main is on Catalyst!');
+ $c->res->redirect($c->req->base,'/tags');
+}
+
+sub tags : Global {
+ my ( $self, $c ) = @_;
+ $c->stash->{template}='tags';
+ $c->stash->{tags}=[Bookmarks::M::DB::Tags->get_all_tags_by_popularity()];
}
=back
diff --git a/lib/Bookmarks/M/DB.pm b/lib/Bookmarks/M/DB.pm
index 44d7498..a31a25e 100644
--- a/lib/Bookmarks/M/DB.pm
+++ b/lib/Bookmarks/M/DB.pm
@@ -11,10 +11,17 @@ __PACKAGE__->config(
user => '',
password => '',
options => {},
- relationships => 1
+ relationships => 1,
+ additional_base_classes => [
+ qw(
+ Class::DBI::AbstractSearch
+ Class::DBI::Plugin::DeepAbstractSearch
+ Class::DBI::Plugin::AbstractCount
+ Class::DBI::Plugin::Pager
+ )
+ ],
);
-
=head1 NAME
Bookmarks::M::DB - CDBI Model Component
diff --git a/lib/Bookmarks/M/DB/Links.pm b/lib/Bookmarks/M/DB/Links.pm
index 7b8928f..851d9a3 100644
--- a/lib/Bookmarks/M/DB/Links.pm
+++ b/lib/Bookmarks/M/DB/Links.pm
@@ -2,6 +2,15 @@ package Bookmarks::M::DB::Links;
use strict;
+for my $col_name (qw(add_date last_access_date)) {
+ __PACKAGE__->has_a( $col_name => 'DateTime',
+ inflate => sub { DateTime->from_epoch( epoch => $_ ) },
+ deflate => 'epoch',
+ );
+}
+
+__PACKAGE__->has_many( tags => [Bookmarks::M::DB::LinkTags => 'tag'] );
+
=head1 NAME
Bookmarks::M::DB::Links - CDBI Model Component Table Class
diff --git a/lib/Bookmarks/M/DB/LinksTags.pm b/lib/Bookmarks/M/DB/LinksTags.pm
index df85fe7..448927e 100644
--- a/lib/Bookmarks/M/DB/LinksTags.pm
+++ b/lib/Bookmarks/M/DB/LinksTags.pm
@@ -2,6 +2,9 @@ package Bookmarks::M::DB::LinksTags;
use strict;
+__PACKAGE__->has_a( link => 'Bookmarks::M::DB::Links' );
+__PACKAGE__->has_a( tag => 'Bookmarks::M::DB::Tags' );
+
=head1 NAME
Bookmarks::M::DB::LinksTags - CDBI Model Component Table Class
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