diff options
author | dakkar <dakkar@luxion> | 2005-10-19 19:34:59 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2005-10-19 19:34:59 +0000 |
commit | 45d560a6dc56462a4338e90a8174a02a0a00302d (patch) | |
tree | c92f6831288bed4074674722eec4548566b399c5 /lib/Bookmarks/M/DB | |
parent | fatto il db (diff) | |
download | Bookmarks-45d560a6dc56462a4338e90a8174a02a0a00302d.tar.gz Bookmarks-45d560a6dc56462a4338e90a8174a02a0a00302d.tar.bz2 Bookmarks-45d560a6dc56462a4338e90a8174a02a0a00302d.zip |
relazioni, e inizio lavori
Diffstat (limited to 'lib/Bookmarks/M/DB')
-rw-r--r-- | lib/Bookmarks/M/DB/Links.pm | 9 | ||||
-rw-r--r-- | lib/Bookmarks/M/DB/LinksTags.pm | 3 | ||||
-rw-r--r-- | lib/Bookmarks/M/DB/Tags.pm | 32 |
3 files changed, 44 insertions, 0 deletions
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 |