@ISA = qw(Exporter);
@EXPORT_OK = qw(dbh fields hfields qsearch qsearchs dbdef);
-$File::CounterFile::DEFAULT_DIR = "/var/spool/freeside/counters" ;
-
-$dbdef_file = "/var/spool/freeside/dbdef.". datasrc;
-
-reload_dbdef unless $setup_hack;
+#ask FS::UID to run this stuff for us later
+$FS::UID::callback{'FS::Record'} = sub {
+ $File::CounterFile::DEFAULT_DIR = "/usr/local/etc/freeside/counters". datasrc;
+ $dbdef_file = "/usr/local/etc/freeside/dbdef.". datasrc;
+ &reload_dbdef unless $setup_hack; #$setup_hack needed now?
+};
=head1 NAME
# }
#}
- foreach my $column (keys %{$hashref}) {
+ foreach my $column ( FS::Record::fields $table ) {
#trim the '$' from money fields for Pg (beong HERE?)
#(what about Pg i18n?)
if ( datasrc =~ m/Pg/
=item qsearch TABLE, HASHREF
Searches the database for all records matching (at least) the key/value pairs
-in HASHREF. Returns all the records found as FS::Record objects.
+in HASHREF. Returns all the records found as `FS::TABLE' objects if that
+module is loaded (i.e. via `use FS::cust_main;'), otherwise returns FS::Record
+objects.
=cut
$sth=$dbh->prepare($statement)
or croak $dbh->errstr; #is that a little too harsh? hmm.
- map {
- new FS::Record ($table,$sth->fetchrow_hashref);
- } ( 1 .. $sth->execute );
+ if ( eval ' scalar(@FS::'. $table. '::ISA);' ) {
+ map {
+ eval 'create FS::'. $table. ' ( $sth->fetchrow_hashref );';
+ } ( 1 .. $sth->execute );
+ } else {
+ carp "qsearch: warning: FS::$table not loaded; returning generic FS::Record objects";
+ map {
+ new FS::Record ($table,$sth->fetchrow_hashref);
+ } ( 1 .. $sth->execute );
+ }
}
=item qsearchs TABLE, HASHREF
-Searches the database for a record matching (at least) the key/value pairs
-in HASHREF, and returns the record found as an FS::Record object. If more than
-one record matches, it B<carp>s but returns the first. If this happens, you
-either made a logic error in asking for a single item, or your data is
-corrupted.
+Same as qsearch, except that if more than one record matches, it B<carp>s but
+returns the first. If this happens, you either made a logic error in asking
+for a single item, or your data is corrupted.
=cut
ut_sqltype (like ut_varchar) should all be defined
-A fallback check method should be provided with uses the dbdef.
+A fallback check method should be provided whith uses the dbdef.
The ut_money method assumes money has two decimal digits.
ut_phonen got ''; at the end ivan@sisd.com 98-sep-27
+$Log: Record.pm,v $
+Revision 1.5 1998-11-13 09:56:51 ivan
+change configuration file layout to support multiple distinct databases (with
+own set of config files, export, etc.)
+
+Revision 1.4 1998/11/10 07:45:25 ivan
+doc clarification
+
+Revision 1.2 1998/11/07 05:17:18 ivan
+In sub new, Pg wrapper for money fields from dbdef (FS::Record::fields $table),
+not keys of supplied hashref.
+
+
=cut
1;