diff options
Diffstat (limited to 'lib/Narwhal/Component/Model.pm')
-rw-r--r-- | lib/Narwhal/Component/Model.pm | 50 |
1 files changed, 50 insertions, 0 deletions
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; |