summaryrefslogtreecommitdiffstats
path: root/lib/Narwhal/Page/Revision.pm
blob: 08a21c9040f67b16a4f40c0a07ed117f5aa2ef19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package Narwhal::Page::Revision;
use KiokuDB::Class;

use DateTime;

with 'KiokuDB::Role::ID::Digest', 'MooseX::Clone';

has text => (
    is       => 'ro',
    isa      => 'Str',
    required => 1,
);

has author => (
    is       => 'ro',
    isa      => 'Narwhal::User',
    required => 1,
);

has modification_date => (
    traits  => ['NoClone'],
    is      => 'ro',
    isa     => 'DateTime',
    default => sub { DateTime->now },
);

has previous_revision => (
    traits => ['KiokuDB::Lazy'],
    is     => 'ro',
    isa    => 'Narwhal::Page::Revision',
);

sub new_revision {
    my $self = shift;
    $self->clone(
        previous_revision => $self,
        @_,
    );
}

sub digest_parts {
    my $self = shift;
    return (
        $self->text,
        $self->modification_date->iso8601,
        $self->author->id,
    );
}

__PACKAGE__->meta->make_immutable;
no KiokuDB::Class;

1;