diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-02-18 11:51:54 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-02-18 11:52:22 -0600 |
commit | 3aee937a96e2ca2afc2c37fbf69274a08d5f8293 (patch) | |
tree | 7d96b7424a48912844f54a2d1cacbeb280be705d /lib/Narwhal/Component/Model.pm | |
parent | 115416dfdce1a737ad343610d7a116e3b5db0e64 (diff) | |
download | narwhal-3aee937a96e2ca2afc2c37fbf69274a08d5f8293.tar.gz narwhal-3aee937a96e2ca2afc2c37fbf69274a08d5f8293.zip |
get a model class going
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; |