X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FUUIDColumns.pm;h=b4af9ba5390bf8467f9ee3f371bb0d0c16764d3f;hb=7408ffa3c76c0e4476c5a6a1f076a09a375de79b;hp=fdd6adced783140bceee370de86ab4a0b2dc548c;hpb=20a5eb0cfea21860582171c482d1220bcddc6315;p=dbsrgits%2FDBIx-Class-UUIDColumns.git diff --git a/lib/DBIx/Class/UUIDColumns.pm b/lib/DBIx/Class/UUIDColumns.pm index fdd6adc..b4af9ba 100644 --- a/lib/DBIx/Class/UUIDColumns.pm +++ b/lib/DBIx/Class/UUIDColumns.pm @@ -3,13 +3,19 @@ package DBIx::Class::UUIDColumns; use strict; use warnings; +use vars qw($VERSION); use base qw/DBIx::Class/; __PACKAGE__->mk_classdata( 'uuid_auto_columns' => [] ); __PACKAGE__->mk_classdata( 'uuid_maker' ); __PACKAGE__->uuid_class( __PACKAGE__->_find_uuid_module ); -# be compatible with Class::DBI::UUID +# Always remember to do all digits for the version even if they're 0 +# i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports +# brain damage and presumably various other packaging systems too + +$VERSION = '0.01000'; + sub uuid_columns { my $self = shift; for (@_) { @@ -22,11 +28,11 @@ sub uuid_class { my ($self, $class) = @_; if ($class) { - $class = "DBIx::Class::UUIDMaker$class" if $class =~ /^::/; + $class = "DBIx::Class::UUIDColumns::UUIDMaker$class" if $class =~ /^::/; if (!eval "require $class") { $self->throw_exception("$class could not be loaded: $@"); - } elsif (!$class->isa('DBIx::Class::UUIDMaker')) { + } elsif (!$class->isa('DBIx::Class::UUIDColumns::UUIDMaker')) { $self->throw_exception("$class is not a UUIDMaker subclass"); } else { $self->uuid_maker($class->new); @@ -66,7 +72,7 @@ sub _find_uuid_module { } elsif (eval{require Win32API::GUID}) { return '::Win32API::GUID'; } else { - shift->throw_exception('no suitable uuid module could be found') + die 'no suitable uuid module could be found for use with DBIx::Class::UUIDColumns'; }; }; @@ -79,14 +85,17 @@ DBIx::Class::UUIDColumns - Implicit uuid columns =head1 SYNOPSIS - package Artist; - __PACKAGE__->load_components(qw/UUIDColumns Core DB/); - __PACKAGE__->uuid_columns( 'artist_id' ); +In your L table class: + + __PACKAGE__->load_components(qw/UUIDColumns ... Core/); + __PACKAGE__->uuid_columns('artist_id'); + +B The component needs to be loaded I Core. =head1 DESCRIPTION -This L component resembles the behaviour of -L, to make some columns implicitly created as uuid. +This L component resembles the behaviour of L, +to make some columns implicitly created as uuid. When loaded, C will search for a suitable uuid generation module from the following list of supported modules: @@ -102,35 +111,41 @@ If no supporting module can be found, an exception will be thrown. *APR::UUID will not be loaded under OpenBSD due to an as yet unidentified XS issue. -If you would like to use a specific module, you can set C: +If you would like to use a specific module, you can set L: __PACKAGE__->uuid_class('::Data::UUID'); __PACKAGE__->uuid_class('MyUUIDGenerator'); -Note that the component needs to be loaded before Core. - =head1 METHODS -=head2 uuid_columns(@columns) +=head2 get_uuid + +Returns a uuid string from the current uuid_maker. + +=head2 insert + +Inserts a new uuid string into each column in L. + +=head2 uuid_columns Takes a list of columns to be filled with uuids during insert. - __PACKAGE__->uuid_columns('id'); + __PACKAGE__->uuid_columns('artist_id'); -=head2 uuid_class($classname) +=head2 uuid_class Takes the name of a UUIDMaker subclass to be used for uuid value generation. This can be a fully qualified class name, or a shortcut name starting with :: -that matches one of the available DBIx::Class::UUIDMaker subclasses: +that matches one of the available L subclasses: __PACKAGE__->uuid_class('CustomUUIDGenerator'); # loads CustomeUUIDGenerator - __PACKAGE->uuid_class('::Data::UUID'); + __PACKAGE__->uuid_class('::Data::UUID'); # loads DBIx::Class::UUIDMaker::Data::UUID; Note that C chacks to see that the specified class isa -DBIx::Class::UUIDMaker subbclass and throws and exception if it isn't. +L subbclass and throws and exception if it isn't. =head2 uuid_maker @@ -140,11 +155,14 @@ Returns the current UUIDMaker instance for the given module. =head1 SEE ALSO -L +L -=head1 AUTHORS +=head1 AUTHOR Chia-liang Kao + +=head1 CONTRIBUTERS + Chris Laco =head1 LICENSE