DBIx::Class::Async

The README  is  used  to  introduce the module and provide instructions on how to
install the module, any machine dependencies it may have (for example C compilers
and installed libraries) and any other information that should be provided before
the module is installed.

A  README  file  is required for CPAN modules since CPAN extracts the README file
from a module distribution so that people browsing the archive can use it to  get
an  idea  of  the  module's  uses.  It  is usually a good idea to provide version
information here so that people can decide whether fixes for the module are worth
downloading.

INSTALLATION

To install this module, run the following commands:

    perl Makefile.PL
    make
    make test
    make install

INTEGRATION WITH RESULT CLASSES

To enable asynchronous row-level methods (update and delete), you must load the
Async::ResultComponent in your specific Result classes. This allows row objects
to intercept standard blocking calls and reroute them to the background worker.

Configuration:

    In each of your Result files (e.g., My/Schema/Result/User.pm):

    package My::Schema::Result::User;
    use base 'DBIx::Class::Core';

    # Load Async::ResultComponent before Core
    __PACKAGE__->load_components(qw/Async::ResultComponent Core/);

    __PACKAGE__->table('users');

IMPORTANT: Return Values (Futures)

    Unlike standard DBIx::Class, row-level update and delete methods now
    return a Future. You must use asynchronous chaining:

    $row->update({ name => 'New Name' })->then(sub {
        my $updated_row = shift;
        say "Update complete!";
    });

Why this is necessary?

    Standard DBIx::Class::Row methods are blocking. This component ensures
    that row-level I/O does not stall your IO::Async event loop. It provides
    zero-config identity mapping, automatically handling simple or composite
    primary keys to target the correct database record.

SUPPORT AND DOCUMENTATION

After installing,  you  can  find  documentation for this module with the perldoc
command.

    perldoc DBIx::Class::Async

You can also look for information at:

    BUG Report
        https://github.com/manwar/DBIx-Class-Async/issues

    CPAN Ratings
        http://cpanratings.perl.org/d/DBIx-Class-Async

    Search MetaCPAN
        https://metacpan.org/dist/DBIx-Class-Async

LICENSE AND COPYRIGHT

Copyright (C) 2026 Mohammad Sajid Anwar

This program is free software; you can redistribute it and/or modify it under the
terms of the the Artistic License (2.0).You may obtain a copy of the full license
at:

    http://www.perlfoundation.org/artistic_license_2_0

Any  use,  modification, and distribution of the Standard or Modified Versions is
governed by this Artistic License.By using, modifying / distributing the Package,
you accept this license. Do not use, modify, or distribute the Package, if you do
not accept this license.

If your Modified Version has been derived from a Modified Version made by someone
other than you, you're nevertheless required to ensure that your Modified Version
complies with the requirements of this license.

This  license  does  not  grant you the right to use any trademark, service mark,
tradename, or logo of the Copyright Holder.

This license includes the non-exclusive, worldwide, free-of-charge patent license
to  make,  have made, use, offer to sell, sell, import and otherwise transfer the
Package with respect to any patent claims licensable by the Copyright Holder that
are  necessarily  infringed  by the  Package.  If you institute patent litigation
(including  a  cross-claim or  counterclaim)  against any party alleging that the
Package constitutes direct or contributory patent infringement,then this Artistic
License to you shall terminate on the date that such litigation is filed.

Disclaimer  of  Warranty:  THE  PACKAGE  IS  PROVIDED BY THE COPYRIGHT HOLDER AND
CONTRIBUTORS  "AS IS'  AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
WARRANTIES    OF     MERCHANTABILITY,   FITNESS   FOR   A PARTICULAR  PURPOSE, OR
NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS
REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE
OF THE PACKAGE,EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
