Skip to content
vanstyn edited this page Feb 17, 2013 · 36 revisions
  • Adopt changeset_do from DBIx::Class::Shadow -- API to allow AuditAny-aware code to be able to set datapoint values (similar conceptually to AuditLog's optional second arg to txn_do)
  • Integrate with DBIx::Class::Shadow (Collector)
  • Expand Collector API to be able to define datapoints
  • Finish Multi-PK support (code already exists but is currently disabled because it hasn't been tested yet... and it will probably need tweaks )
  • Add built-in "diff" Column-context datapoint
  • Add mechanism to enable/disable tracking on the fly (localizable global?)
  • Separate set/change/column datapoints into 'pre' and 'post' stages with well-defined collection times
  • Add per-column config options (i.e. selectively track columns in the same way that sources can be selectively tracked)
  • Move a lot of the code currently in the base DBIx::Class::AuditAny into a dedicated DBIx::Class::AuditAny::Auditor class
  • Expand tests with "subtests"
  • Add option to try and detect direct calls to dbh and throw exception/warning?
  • Track select option? (i.e. track reads/queries in addition to writes)
  • New built-in datapoint: 'sql' (the actual sql statement used)
  • Properly handle special insert_bulk case

Completed

  • Switch from Moose to lighter Moo (how to handle Types? Doesn't appear to be a seamless conversion, currently using "string" type constraints (i.e. isa => "HashRef")
  • Proper handling for txn with nesting (txn_begin/txn_commit/txn_rollback/txn_do)
  • Add support for tracking changes made through ResultSet objects instead of Row objects. Do this by hooking into Storage insert/update/delete ? (done except special insert_bulk case)
  • Refactor code that modifies tracked schema and result classes using Class::MOP::Class to apply a (runtime) Roles to the schema/storage objects (per frew's suggestion in IRC on 1/25/2013) - done except for legacy init/snapshot mode which still needs decisions made for how it will work
  • Refactor hook/flows to support pre/post designs (done, but not utilized yet)

Needed Test Cases

  • Tracking Rekey changes
  • Multi-PK
  • No PK
  • Tracking of schemas with more exotic configs like their own method modifiers
  • db level cascases (on_update/on_delete)
  • Multiple Auditors
  • Partial tracking (only certain actions/sources, make sure others are in fact ignored)
  • $Rs->populate
  • Calls in both LIST and SCALAR context to make sure arounds properly honor wantarray
  • Test for each and every built-in datapoint
  • init/snapshot functionality - ability to populate current values of an existing DB to the collector, special action named 'select'. This is a special active operation as apposed to normal passive operation that relies on changes.
  • Changes both inside and outside txn_do as well as nested txn_do
  • ditto for 'changeset_do' (once that feature is implemented)
  • Database-side default column values (of tracked schema)
  • inflated columns
  • exception handling - generated by either the DB or code itself (i.e. test proper try/catch logic and rethrow)
  • Testing timestamps and time_zones
  • DBIC/AutoDBIC collectors: different combinations and distributions of tables for storage (only 1 table, only 2 tables, etc)

Done

  • Update called on resultset
Clone this wiki locally