[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 @_;