I am for the complex transaction. Not so convinced about the simple transaction.
On Feb 7, 9:30 am, Robin B <[email protected]> wrote: > It is not in any patch. It is RFC to decide if it is a good idea and > how it is supposed to work... > > this could be a shorter syntax, because you do not construct the > attrs, you just mutate the record directly: > > def txn(rec): > if rec.name == 'bob': > rec.count += 1 > elif rec.name == 'alice': > rec.count -= 1 > > In general you should not mutate the args in a transaction, because > the transaction may be retried several times, but this txn is wrapped > inside a real transaction, so it gets fresh args each retry, so it is > okay to mutate them: > > def real_txn(txn,record): > rec = google_db.get_by_id(record.id) > rec.id = rec.key().id() > txn(rec) > rec.put() > return rec > > return google_db.run_in_transaction(real_txn,record) > > This can be made backwards compatible with SQL which just calls the > callable. > > If this is acceptable, I will start implementing it. > > Robin > > On Feb 7, 9:11 am, mdipierro <[email protected]> wrote: > > > I assume this is in your latest patch. I will try apply it during the > > week-end. > > > On Feb 7, 8:39 am, Robin B <[email protected]> wrote: > > > > update() and update_record() should accept callables: > > > > def txn(record): > > > attrs = {} > > > if record.name == 'bob': > > > attrs['count'] = record.count + 1 > > > elif record.name == 'alice': > > > attrs['count'] = record.count - 1 > > > return attrs > > > > #complex transactions > > > (db.posts.id>0).update(txn) > > > > # simple transactions > > > (db.posts.id>0).update(count=lambda v: v+1) > > > > The benefit of a complex transaction is that the developer can control > > > the order attributes are assigned and make complex decisions in side > > > the transaction. Simple transactions can use the shorthand notation > > > and put the callable inline. > > > > Robin --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

