[jifty-devel] Jifty-DBI: patch proposal for a delete method for the Collection class

Jesse Vincent jesse at bestpractical.com
Thu Oct 19 14:53:43 EDT 2006




On Thu, Oct 19, 2006 at 08:26:21PM +0200, Frederic BLANC wrote:
>  Hello,
> 
>  Here is a patch intended to add a delete method to the Jifty::DBI::Collection
> class.
>  IMO, providing such a method will be more efficient than the answer given
> to the "How do I delete all records from a table using a Model?" question
> (http://jifty.org/view/HowDoI); by the way, the new answer would be:
> 
> my $system_user = CalLabCert::CurrentUser->superuser;
> my $collection = CalLabCert::Model::DatFileCollection->new(
>                                            current_user => $system_user
> );
> $collection->unlimit();
> # but we can use a limit(), as long it does not join tables.
> $collection->delete();

What would you think about making the method name something a little
more explicit? 

$collection->delete_all_records() ?

		->delete_records()?

For something adding new SQL (especially new SQL that alters the
database), tests are essential.

This is also, I think, the first time, users can alter the database's
content from the collection class. Given the way we use JDBI in Jifty,
this would have the side-effect of walking around our access control.

This also doesn't quite have the effect I'd expect. 

If I create a collection, check that it has the right things in it and
then call delete:
	1) I'm not sure I get the right result with regard to paging
	2) If someone else has added a matching row in the meantime,
	   I'm going to be a VERY sad user ;)

Would you be happy with a solution that called the records' delete
methods instead?  That has the added benefit of catching model-specific
delete code too :)


Best,
Jesse


More information about the jifty-devel mailing list