It stores all previous versions.

On Thursday, 5 April 2012 22:29:46 UTC-5, mart wrote:
>
> Massimo, this is great! 
>
> Question: does it keep a copy of the latest previous record only (I'm 
> sorry, I hope that made sense), or do all submitted changes get copied to 
> archive (a new record is stored for each submitted change) ?
>
> If the answer is "all submitted changes get copied" , then I would like to 
> follow up with comments and questions (I'll try to keep them short, promise 
> ;) ).
>
> I'm about to pull trunk in a few minutes and try this feature.
>
> Thanks,
> Mart :)
>
> On Thursday, April 5, 2012 7:11:26 PM UTC-4, Massimo Di Pierro wrote:
>>
>> Now you can. ;-)
>>
>> auth.enable_record_versioning(db, archive_db=other_db)
>>
>>
>> On Thursday, 5 April 2012 17:28:43 UTC-5, rochacbruno wrote:
>>>
>>> is it possible to redirect the archive to a separate database?
>>>
>>> On Thu, Apr 5, 2012 at 7:16 PM, Massimo Di Pierro <
>>> [email protected]> wrote:
>>>
>>>> This is how it works:
>>>>
>>>> # define auth 
>>>> auth = Auth(db, hmac_key=Auth.get_or_create_key())
>>>> auth.define_tables(username=True,signature=True)
>>>>
>>>> # define your own tables like
>>>> db.define_table('mything',Field('name'),auth.signature)
>>>>
>>>> # than do:
>>>> auth.enable_record_versioning(db)
>>>>
>>>> how does it work? every table, including auth_user will have an 
>>>> auth.signature including created_by, created_on, modified_by, modified_on, 
>>>> is_active fields. When a record of table mything (or any other table) is 
>>>> modified, a copy of the previous record is copied into mything_archive 
>>>> which references the current record. When a record is deleted, it is not 
>>>> actually deleted but is_active is set to False, all records with 
>>>> is_active==False are filtered out in searches except in appadmin.
>>>>
>>>> Pros:
>>>> - your app will get full record archival for auditing purposes
>>>> - could not be simpler. nothing else to do. Try with 
>>>> SQLFORM.grid(db.mything) for example.
>>>> - does not break references and there is no need for uuids
>>>> - does not slow down searches because archive is done in separate 
>>>> archive tables
>>>>
>>>> Cons:
>>>> - uses lots of extra memory because every version of a record is stored 
>>>> (it would be more efficient to store changes only but that would make more 
>>>> difficult to do auditing).
>>>> - slows down db(...).update(...) for multi record because it needs to 
>>>> copy all records needing update from the original table to the archive 
>>>> table. This requires selecting all the records.
>>>>
>>>> Comments? Suggestions?
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> -- 
>>>
>>> Bruno Rocha
>>> [http://rochacbruno.com.br]
>>>
>>>

Reply via email to