[interchange-cvs] interchange - heins modified lib/Vend/Order.pm
interchange-cvs at icdevgroup.org
interchange-cvs at icdevgroup.org
Sat Mar 6 17:16:58 EST 2004
User: heins
Date: 2004-03-06 22:16:57 GMT
Modified: lib/Vend Order.pm
Log:
* Add "exists" order check, which tests for pre-existance of a
database record.
Uses the same syntax as the "unique" check, in other word
table(::foreign)?
For example:
email=exists userdb:email
will fail if a particular email address does not exist in userdb.
username=exists userdb
will fail if $CGI->{username} doesn't exist as a record in userdb.
Revision Changes Path
2.64 +42 -2 interchange/lib/Vend/Order.pm
rev 2.64, prev_rev 2.63
Index: Order.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Order.pm,v
retrieving revision 2.63
retrieving revision 2.64
diff -u -r2.63 -r2.64
--- Order.pm 22 Feb 2004 19:28:37 -0000 2.63
+++ Order.pm 6 Mar 2004 22:16:57 -0000 2.64
@@ -1,6 +1,6 @@
# Vend::Order - Interchange order routing routines
#
-# $Id: Order.pm,v 2.63 2004/02/22 19:28:37 mheins Exp $
+# $Id: Order.pm,v 2.64 2004/03/06 22:16:57 mheins Exp $
#
# Copyright (C) 2002-2003 Interchange Development Group
# Copyright (C) 1996-2002 Red Hat, Inc.
@@ -29,7 +29,7 @@
package Vend::Order;
require Exporter;
-$VERSION = substr(q$Revision: 2.63 $, 10);
+$VERSION = substr(q$Revision: 2.64 $, 10);
@ISA = qw(Exporter);
@@ -205,6 +205,46 @@
}
}
return (1, $name, '');
+ },
+ 'exists' => sub {
+ my($name, $value, $code) = @_;
+
+ $code =~ s/(\w+)(:+(\w+))?\s*//;
+ my $tab = $1
+ or return (0, $name, errmsg("no table specified"));
+ my $col = $3;
+ my $msg = $code;
+
+ my $db = database_exists_ref($tab)
+ or do {
+ $msg = errmsg(
+ "Table %s doesn't exist",
+ $tab,
+ );
+ return(0, $name, $msg);
+ };
+ my $used;
+ if(! $col) {
+ $used = $db->record_exists($value);
+ }
+ else {
+#::logDebug("Doing foreign key check, tab=$tab col=$col value=$value");
+ $used = $db->foreign($value, $col);
+ }
+
+#::logDebug("Checking exists, tab=$tab col=$col, used=$used");
+ if($used) {
+ return (1, $name, '');
+ }
+ else {
+ $msg = errmsg(
+ "Key %s does not exist in %s, try again.",
+ $value,
+ $tab,
+ ) unless $msg;
+ return(0, $name, $msg);
+ }
+
},
'unique' => sub {
my($name, $value, $code) = @_;
More information about the interchange-cvs
mailing list