NAME
Test::DBChanges::Pg - track changes to PostgreSQL tables
VERSION
version 1.0.2
SYNOPSIS
my $dbchanges = Test::DBChanges::Pg->new({
dbh => $dbh,
source_names => [qw(things ledger)],
});
# later:
my $changeset = $dbchanges->changeset_for_code(sub { do_something($dbh) });
for my $row ($changeset->changes_for_source('things')->inserted_rows->@*) {
# $row is a hashref with the inserted data
}
DESCRIPTION
This class installs a set of triggers in the database, that record all changes (insert, update, delete) to a set of tables. This requires PostgreSQL version 9.4 at least, because it uses the JSONB
type.
It can then parse this record into a changeset, which will build hashrefs corresponding to each changed row.
This should really only be used in tests. At the moment the table, stored procedure and triggers that this class needs are installed but never removed.
ATTRIBUTES
source_names
Arrayref of names of the tables to record changes for.
dbh
Connected database handle to track changes in.
METHODS
changeset_for_code
my $changeset = $dbchanges->changeset_for_code(sub { ... });
Runs the given coderefs, and returns a Test::DBChanges::ChangeSet
instance containing all changes to the tables referenced by the "source_names".
AUTHOR
Gianni Ceccarelli <gianni.ceccarelli@broadbean.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by BroadBean UK, a CareerBuilder Company.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.