[freeside-devel] [PATCH] FS::Record by_key constructor

ivan ivan at 420.am
Tue Jul 12 02:13:26 PDT 2005


applied, thanks!

On Thu, Jun 16, 2005 at 11:42:44AM -0400, Ricardo SIGNES wrote:
> It's seemed needlessly verbose to write:
> 
>   qsearchs('some_table', { 'some_column' => $some_value })
> 
> Every time I wanted to get the object for a known primary key, and using
> a function intead of a method was also a bit jarring, given the mostly
> OO interface.
> 
> The attached patch adds a ->by_key method to FS::Record, which can be
> used to retrieve a record in a FS::Record by primary key.  Example:
> 
>   FS::cust_main->by_key(1); # retrieve customer with custnum 1
> 
> -- 
> rjbs

> Index: FS/FS/Record.pm
> ===================================================================
> RCS file: /var/lib/cvs/cvsroot/freeside/FS/FS/Record.pm,v
> retrieving revision 1.2
> diff -u -r1.2 Record.pm
> --- a/FS/FS/Record.pm	15 Jun 2005 20:52:50 -0000	1.2
> +++ b/FS/FS/Record.pm	16 Jun 2005 15:39:21 -0000
> @@ -427,6 +427,26 @@
>    return @return;
>  }
>  
> +=item by_key($pkey_value)
> +
> +This returns the record with the given PK value.  This method is only useful in
> +FS::Record subclasses.
> +
> +=cut
> +
> +sub by_key {
> +  my ($class, $pkey_value) = @_;
> +
> +  my $table = $class->table or return;
> +
> +  my $dbdef_table = $dbdef->table($table)
> +    or die "No schema for table $table found - ".
> +           "do you need to create it or run dbdef-create?";
> +  my $pkey = $dbdef_table->primary_key;
> +
> +  return qsearchs($table, { $pkey => $pkey_value });
> +}
> +
>  =item jsearch TABLE, HASHREF, SELECT, EXTRA_SQL, PRIMARY_TABLE, PRIMARY_KEY
>  
>  Experimental JOINed search method.  Using this method, you can execute a


-- 
_ivan


More information about the freeside-devel mailing list