use croak instead of die for user errors.
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / UUIDColumns.pm
CommitLineData
7da9cd47 1package DBIx::Class::UUIDColumns;
1edd1722 2use base qw/DBIx::Class/;
7da9cd47 3
aa562407 4use Carp qw/croak/;
5
7da9cd47 6use Data::UUID;
7
8__PACKAGE__->mk_classdata( 'uuid_auto_columns' => [] );
9
10=head1 NAME
11
12DBIx::Class::UUIDColumns - Implicit uuid columns
13
14=head1 SYNOPSIS
15
16 pacakge Artist;
17 __PACKAGE__->load_components(qw/UUIDColumns Core DB/);
18 __PACKAGE__->uuid_columns( 'artist_id' );x
19
20=head1 DESCRIPTION
21
22This L<DBIx::Class> component resambles the behaviour of
23L<Class::DBI::UUID>, to make some columns implicitly created as uuid.
24
25Note that the component needs to be loaded before Core.
26
27=head1 METHODS
28
8091aa91 29=head2 uuid_columns
7da9cd47 30
31=cut
32
33# be compatible with Class::DBI::UUID
34sub uuid_columns {
35 my $self = shift;
36 for (@_) {
aa562407 37 croak "column $_ doesn't exist" unless $self->has_column($_);
7da9cd47 38 }
39 $self->uuid_auto_columns(\@_);
40}
41
42sub insert {
43 my ($self) = @_;
44 for my $column (@{$self->uuid_auto_columns}) {
103647d5 45 $self->store_column( $column, $self->get_uuid )
46 unless defined $self->get_column( $column );
7da9cd47 47 }
147dd158 48 $self->next::method;
7da9cd47 49}
50
51sub get_uuid {
52 return Data::UUID->new->to_string(Data::UUID->new->create),
53}
54
7da9cd47 55=head1 AUTHORS
56
57Chia-liang Kao <clkao@clkao.org>
58
59=head1 LICENSE
60
61You may distribute this code under the same terms as Perl itself.
62
63=cut
64
651;