NAME

PAGI::FastAPI::Depends - Dependency Injection Wrapper for PAGI::FastAPI

VERSION

Version v1.0.0

SYNOPSIS

use PAGI::FastAPI::Depends qw(Depends);

my $get_db = async sub ($c) {
    return My::DB->connect;
};

my $auth_check = async sub ($c) {
    my $token = $c->header('Authorization');
    unless ($token) {
        $c->status(401);
        return { detail => 'Unauthorized' };
    }
};

$app->get('/items',
    dependencies => [
        Depends($get_db, key => 'db'), # Store result in $c->stash->{db}
        Depends($auth_check),          # Execution guard dependency
    ],
    handler => async sub ($c) {
        my $db = $c->stash->{db};
        return { status => 'ok' };
    }
);

DESCRIPTION

PAGI::FastAPI::Depends provides a lightweight container object for wrapping async dependency subroutines in PAGI::FastAPI.

When registered on a route, dependencies execute asynchronously before the primary route handler. If a key option is specified, the return value of the dependency is automatically injected into the request context's stash ($c->stash->{$key}).

FUNCTIONS

Depends($code_ref, [%options])

Exportable helper function that constructs a new PAGI::FastAPI::Depends instance.

my $dep = Depends($code_ref, key => 'user');

Options:

key - Optional scalar string key under which the dependency's return value will be stored in $c->stash.

METHODS

new(code = $code_ref, [key => $key])>

Constructs a new PAGI::FastAPI::Depends object instance. Dies if $code_ref is missing or not a CODE reference.

code()

Returns the underlying code reference for the dependency subroutine.

key()

Returns the stash key string associated with the dependency, or undef if none was defined.

AUTHOR

Mohammad Sajid Anwar, <mohammad.anwar at yahoo.com>

REPOSITORY

https://github.com/manwar/PAGI-FastAPI

BUGS

Please report any bugs or feature requests through the web interface at https://github.com/manwar/PAGI-FastAPI/issues. I will be notified and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc PAGI::FastAPI::Depends

You can also look for information at:

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 Artistic License (2.0).