Provided by: libdbix-class-helpers-perl_2.036000-2_all bug

NAME

       DBIx::Class::Helper::Schema::LintContents - suite of methods to find violated
       "constraints"

SYNOPSIS

        package MyApp::Schema;

        use parent 'DBIx::Class::Schema';

        __PACKAGE__->load_components('Helper::Schema::LintContents');

        1;

       And later, somewhere else:

        say "Incorrectly Null Users:";
        for ($schema->null_check_source_auto('User')->all) {
           say '* ' . $_->id
        }

        say "Duplicate Users:";
        my $duplicates = $schema->dup_check_source_auto('User');
        for (keys %$duplicates) {
           say "Constraint: $_";
           for ($duplicates->{$_}->all) {
              say '* ' . $_->id
           }
        }

        say "Users with invalid FK's:";
        my $invalid_fks = $schema->fk_check_source_auto('User');
        for (keys %$invalid_fks) {
           say "Rel: $_";
           for ($invalid_fks->{$_}->all) {
              say '* ' . $_->id
           }
        }

DESCRIPTION

       Some people think that constraints make their databases slower.  As silly as that is, I
       have been in a similar situation!  I'm here to help you, dear developers!  Basically this
       is a suite of methods that allow you to find violated "constraints."  To be clear, the
       constraints I mean are the ones you tell DBIx::Class about, real constraints are fairly
       sure to be followed.

METHODS

   fk_check_source
        my $busted = $schema->fk_check_source(
          'User',
          'Group',
          { group_id => 'id' },
        );

       "fk_check_source" takes three arguments, the first is the from source moniker of a
       relationship.  The second is the to source or source moniker of a relationship.  The final
       argument is a hash reference representing the columns of the relationship.  The return
       value is a resultset of the from source that do not have a corresponding to row.  To be
       clear, the example given above would return a resultset of "User" rows that have a
       "group_id" that points to a "Group" that does not exist.

   fk_check_source_auto
        my $broken = $schema->fk_check_source_auto('User');

       "fk_check_source_auto" takes a single argument: the source to check.  It will check all
       the foreign key (that is, "belongs_to") relationships for missing...  "foreign" rows.  The
       return value will be a hashref where the keys are the relationship name and the values are
       resultsets of the respective violated relationship.

   dup_check_source
        my $smashed = $schema->fk_check_source( 'Group', ['id'] );

       "dup_check_source" takes two arguments, the first is the source moniker to be checked.
       The second is an arrayref of columns that "should be" unique.  The return value is a
       resultset of the source that duplicate the passed columns.  So with the example above the
       resultset would return all groups that are "duplicates" of other groups based on "id".

   dup_check_source_auto
        my $ruined = $schema->dup_check_source_auto('Group');

       "dup_check_source_auto" takes a single argument, which is the name of the resultsource in
       which to check for duplicates.  It will return a hashref where they keys are the names of
       the unique constraints to be checked.  The values will be resultsets of the respective
       duplicate rows.

   null_check_source
        my $blarg = $schema->null_check_source('Group', ['id']);

       "null_check_source" tales two arguments, the first is the name of the source to check.
       The second is an arrayref of columns that should contain no nulls.  The return value is
       simply a resultset of rows that contain nulls where they shouldn't be.

   null_check_source_auto
        my $wrecked = $schema->null_check_source_auto('Group');

       "null_check_source_auto" takes a single argument, which is the name of the resultsource in
       which to check for nulls.  The return value is simply a resultset of rows that contain
       nulls where they shouldn't be.  This method automatically uses the configured columns that
       have "is_nullable" set to false.

AUTHOR

       Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2020 by Arthur Axel "fREW" Schmidt.

       This is free software; you can redistribute it and/or modify it under the same terms as
       the Perl 5 programming language system itself.

perl v5.36.0                                2022-12DBIx::Class::Helper::Schema::LintContents(3pm)