https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=31143

--- Comment #57 from Jonathan Druart <[email protected]> ---
Hello Wainui,
The title of this bug report states that the patches are supposed to "identify
all cases in the database". But with those 2 patches we are only dealing with
two tables: items and patrons.

I am suggesting the following snippet of code that will allow you to catch
invalid dates in the whole database:

use Koha::Database;
my $schema = Koha::Database->new->schema;
# Loop over all the DBIx::Class classes
for my $class ( sort values %{$schema->{class_mappings}} ) {
    # Retrieve the resultset so we can access the columns info
    my $rs = $schema->resultset($class);
    my $columns = $rs->result_source->columns_info;

    # Loop over the columns
    while ( my ( $column, $info ) = each %$columns ) {
        # Next if data type is not date/datetime/timestamp
        my $data_type = $info->{data_type};
        next unless grep { $data_type =~ m{^$_$} } qw( timestamp datetime date
);

        # Count the invalid dates
        my $invalid_dates = $rs->search({ $column => '0000-00-00' })->count;

        next unless $invalid_dates;

        # "items.withdrawn_on contains 42 invalid dates"
        say sprintf "Column %s.%s contains %s invalid dates",
$rs->result_source->name, $column, $invalid_dates;
    }
}

Let me know if you have any questions about it. I can help you to adjust it to
your needs.

-- 
You are receiving this mail because:
You are watching all bug changes.
_______________________________________________
Koha-bugs mailing list
[email protected]
https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to