Class::AutoDB::Collection - Compare two collection definitions and maintain differences
This is a helper class for Class::AutoDB::Registry to to process differences between in-memory and saved registries
use Class::AutoDB::CollectionDiff; use Class::AutoDB::Collection; my $diff=new Class::AutoDB::CollectionDiff (-baseline=>$saved, -change=>$in_memory); if ($diff->is_sub) { # is new collection subset of saved one? $registry=$saved_registry; # if so, use saved one } elsif ($diff->is_different) { # else get changes my %new_keys=$diff->new_keys; # my @expanded_collections=$diff->expanded_collections; } else { die “New collection inconsistent with old”; }
This class compares two collection definitions and records their differences. The first collection is considered the baseline, and differences are reported relative to it. This class does not talk to the database.
Name |
Description |
Priority/When |
---|---|---|
|
|
|
Title |
new |
|
Usage |
my $diff=new Class::AutoDB::CollectionDiff (-baseline=>$saved, -change=>$in_memory); |
|
Function |
Constructor. |
|
Args |
-baseline |
Class::AutoDB::Collection object |
-other |
Class::AutoDB::Collection object |
|
Returns |
CollectionDiff object |
These are methods for getting and setting the values of simple attributes. Methods have the same name as the attribute. Some of these should be read-only (more precisely, should only be written by code internal to the object), but this is not enforced.
To get the value of attribute xxx, just say
$xxx=$object->xxx;
To set an attribute, say
$object->xxx($new_value);
To clear it, say
$object->xxx(undef);
Title |
new_keys |
|
Usage |
my $new_keys=$diff->new_keys; |
|
Function |
Return keys=>type pairs for keys present in new collection, but not baseline |
|
Args |
none |
|
Returns |
HASH ref |
Title |
inconsistent_keys |
|
Usage |
my $key_errors=$diff->inconsistent_keys |
|
Function |
Return keys that are present in both collections with different types. For each such key, both the old and new types are reported |
|
Args |
none |
|
Returns |
HASH ref of key=>[baseline_type, other_type] pairs |
Title |
is_consistent |
|
Usage |
my $bool=$diff->is_consistent |
|
Function |
Check if collection are consistent |
|
Args |
none |
|
Returns |
true/false value |
Title |
is_inconsistent |
|
Usage |
my $bool=$diff->is_inconsistent |
|
Function |
Check if collection are inconsistent |
|
Args |
none |
|
Returns |
true/false value |
Title |
is_equivalent |
|
Usage |
my $bool=$diff->is_equivalent |
|
Function |
Check if collection are equivalent |
|
Args |
none |
|
Returns |
true/false value |
Title |
is_different |
|
Usage |
my $bool=$diff->is_different |
|
Function |
Check if collection are different (not equivalent) |
|
Args |
none |
|
Returns |
true/false value |
Title |
is_sub |
|
Usage |
my $bool=$diff->is_sub |
|
Function |
Check if new collection is subset of baseline. Note: equivalent is considered subset |
|
Args |
none |
|
Returns |
true/false value |
Title |
is_super |
|
Usage |
my $bool=$diff->is_sub |
|
Function |
Check if new collection is superset of baseline. Note: equivalent is considered superset |
|
Args |
none |
|
Returns |
true/false value |
Title |
is_expanded |
|
Usage |
my $bool=$diff->is_expanded |
|
Function |
Check if new collection has new keys relative to baseline |
|
Args |
none |
|
Returns |
true/false value |