Mojolicious-Plugin-Data-Transfigure
view release on metacpan or search on metacpan
NAME
Mojolicious::Plugin::Data::Transfigure - Mojolicious adapter for
Data::Transfigure
SYNOPSIS
# in startup
$app->plugin('Data::Transfigure' => {
renderers => [qw(json openapi)]
});
$app->transfig->output->add_transfigurators(
Data::Transfigure::Type->new(
type => "App::Model::Result::Book",
handler => sub($data) {
+{
id => $data->id,
name => $data->name,
author => $data->author,
}
}
),
Data::Transfigure::Type->new(
type => 'App::Model::Result::Person',
handler => sub($data) {
+{
id => $data->id,
firstname => $data->names->[0],
lastname => $data->names->[1],
}
}
)
);
$app->transfig->input->add_transfigurators(
Data::Transfigure::Position->new(
position => '/**/author',
handler => sub($data) {
+{
id => $data->id,
names => [$data->{firstname}, $data->{lastname}]
}
}
)
);
# in controller
sub get_book($self) {
my $book = $self->model("Book")->find($self->param('id'));
$self->render(json => $book);
}
sub update_book($self) {
my $book = $self->model("Book")->find($self->param('id'));
my $data = $self->transfig->json;
$book->author->update(delete($data->{author}));
$book->update($data);
$book->discard_changes;
$self->render(json => $book);
}
DESCRIPTION
This plugin is an adapter to make Data::Transfigure a bit more
convenient to use in Mojolicious applications. Two transfigurators are
created for you: one for data input, and the other for output. The
default output transfigurator is automatically invoked when rendering
data via any of the methods configured as "renderers". The default input
transfigurator is manually invoked by calling the transfig.json helper
rather than, e.g., "$c->req->json".
METHODS
Mojolicious::Plugin::Data::Transfigure inherits all methods from
Mojolicious::Plugin and implements the following new ones
register
Register the plugin in a Mojolicious application. Configuration via
named arguments:
bare
Configures the default input and output transfigurators to be
initialized with no transfigurations instead of their usual default
sets.
prefix
Configures the prefix used for the module's Mojolicious helper
functions. This documentation assumes that it is left unchanged
Default: "transfig"
renderers
Controls which output rendering functions (e.g., "text", "json") are
intercepted and automatically transfigured before being delivered to the
client
Default: "['json']"
HELPERS
transfig.input
app->transfig->input
Returns the default input transfigurator. Add transfigurations to it by
calling add_transfigurator()/add_transfigurator_at() on the return
value.
By default, the following transfigurators are configured, unless the
"bare" configuration option is enabled:
* Data::Transfigure::Default::ToString
* Data::Transfigure::HashKeys::SnakeCase
transfig.output
( run in 0.617 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )