[interchange-cvs] interchange - heins modified lib/Vend/Order.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Tue Sep 10 11:39:01 2002


User:      heins
Date:      2002-09-10 15:38:49 GMT
Modified:  lib/Vend Order.pm
Log:
* Enhance unique check to allow specification of a foreign key for uniquene=
ss
  check.

Revision  Changes    Path
2.31      +19 -5     interchange/lib/Vend/Order.pm


rev 2.31, prev_rev 2.30
Index: Order.pm
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /var/cvs/interchange/lib/Vend/Order.pm,v
retrieving revision 2.30
retrieving revision 2.31
diff -u -r2.30 -r2.31
--- Order.pm	7 Sep 2002 18:42:47 -0000	2.30
+++ Order.pm	10 Sep 2002 15:38:49 -0000	2.31
@@ -1,6 +1,6 @@
 # Vend::Order - Interchange order routing routines
 #
-# $Id: Order.pm,v 2.30 2002/09/07 18:42:47 mheins Exp $
+# $Id: Order.pm,v 2.31 2002/09/10 15:38:49 mheins Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -28,7 +28,7 @@
 package Vend::Order;
 require Exporter;
=20
-$VERSION =3D substr(q$Revision: 2.30 $, 10);
+$VERSION =3D substr(q$Revision: 2.31 $, 10);
=20
 @ISA =3D qw(Exporter);
=20
@@ -175,9 +175,10 @@
 	'unique'			=3D> sub {
 							my($name, $value, $code) =3D @_;
=20
-							$code =3D~ s/(\w+)\s*//;
+							$code =3D~ s/(\w+)(:+(\w+))?\s*//;
 							my $tab =3D $1
 								or return (0, $name, errmsg("no table specified"));
+							my $col =3D $3;
 							my $msg =3D $code;
=20
 							my $db =3D database_exists_ref($tab)
@@ -188,7 +189,20 @@
 									);
 									return(0, $name, $msg);
 								};
-							if($db->record_exists($value)) {
+							my $used;
+							if(! $col) {
+								$used =3D $db->record_exists($value);
+							}
+							else {
+#::logDebug("Doing foreign key check, tab=3D$tab col=3D$col value=3D$value=
");
+								$used =3D $db->foreign($value, $col);
+							}
+
+#::logDebug("Checking unique, tab=3D$tab col=3D$col, used=3D$used");
+							if(! $used) {
+								return (1, $name, '');
+							}
+							else {
 								$msg =3D errmsg(
 										"Key %s already exists in %s, try again.",
 										$value,
@@ -196,7 +210,7 @@
 									) unless $msg;
 								return(0, $name, $msg);
 							}
-							return (1, $name, '');
+
 						},
 	'&set'			=3D>	sub {=09=09
 								my($ref,$params) =3D @_;