[Dbix-class] Fwd: DBIx::Class patch: better error diagnostics

Matt S Trout dbix-class at trout.me.uk
Wed Dec 6 15:31:01 GMT 2006


Somebody kick the tires at this and apply it if it seems sane please?

Begin forwarded message:

> From: Marc Espie <espie at nerim.net>
> Date: 6 December 2006 15:12:15 GMT
> To: mst at shadowcatsystems.co.uk
> Subject: DBIx::Class patch: better error diagnostics
> Reply-To: espie at nerim.net
>
> As I said in former messages, I'm (still) a novice to DBIx::Class,  
> so I'm
> probably qualified to comment on diagnostics ;-)
>
> Those two patches actually helped me set up my schema correctly  
> (yes, they're
> very simple).
>
> I've noticed that the primary key check is the same, so it probably  
> means
> some refactoring would help more, but those were a life-saver for me.
>
> --- lib/DBIx/Class/Relationship/HasMany.pm.orig	Wed Dec  6 15:56:28  
> 2006
> +++ lib/DBIx/Class/Relationship/HasMany.pm	Wed Dec  6 15:57:00 2006
> @@ -16,6 +16,10 @@ sub has_many {
>        "${class} has more"
>      ) if $too_many;
>
> +    $class->throw_exception(
> +      "has_many needs a primary key to infer a join; ".
> +      "${class} has none"
> +    ) if !defined $pri;
>      my ($f_key,$guess);
>      if (defined $cond && length $cond) {
>        $f_key = $cond;
> --- lib/DBIx/Class/Relationship/HasOne.pm.orig	Wed Dec  6 15:57:05  
> 2006
> +++ lib/DBIx/Class/Relationship/HasOne.pm	Wed Dec  6 15:58:09 2006
> @@ -21,6 +21,10 @@ sub _has_one {
>        "might_have/has_one can only infer join for a single primary  
> key; ".
>        "${class} has more"
>      ) if $too_many;
> +    $class->throw_exception(
> +      "might_have/has_one needs a primary key  to infer a join; ".
> +      "${class} has none"
> +    ) if !defined $pri;
>      my $f_class_loaded = eval { $f_class->columns };
>      my ($f_key,$guess);
>      if (defined $cond && length $cond) {

-- 
Matt S Trout, Technical Director, Shadowcat Systems Ltd.
Offering custom development, consultancy and support contracts for  
Catalyst,
DBIx::Class and BAST. Contact mst (at) shadowcatsystems.co.uk for  
details.
+ Help us build a better perl ORM: http://dbix- 
class.shadowcatsystems.co.uk/ +





More information about the Dbix-class mailing list