From 3aee937a96e2ca2afc2c37fbf69274a08d5f8293 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 18 Feb 2011 11:51:54 -0600 Subject: get a model class going --- lib/Narwhal/Component/Model.pm | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 lib/Narwhal/Component/Model.pm (limited to 'lib/Narwhal/Component/Model.pm') diff --git a/lib/Narwhal/Component/Model.pm b/lib/Narwhal/Component/Model.pm new file mode 100644 index 0000000..cb9a042 --- /dev/null +++ b/lib/Narwhal/Component/Model.pm @@ -0,0 +1,50 @@ +package Narwhal::Component::Model; +use Moose; + +extends 'KiokuX::Model'; + +sub get_user { + my $self = shift; + my ($user_id) = @_; + return $self->lookup("user:$user_id"); +} + +sub get_page { + my $self = shift; + my ($page_id) = @_; + return $self->lookup("page:$page_id"); +} + +sub get_page_rev { + my $self = shift; + my ($page_id, $page_rev) = @_; + my $rev = $self->lookup($page_rev); + return unless $rev; + return unless $rev->page_id eq $page_id; + return $rev; +} + +sub create_page_rev { + my $self = shift; + my %opts = @_; + + my $page_name = delete $opts{page_name}; + my $page = $self->get_page($page_name); + + if ($page) { + $page->new_revision(%opts); + } + else { + $page = Narwhal::Page->new_page( + id => $page_name, + %opts, + ); + } + + $self->store($page); +} + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; -- cgit v1.2.3-54-g00ecf