Aniki

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


   - fixed packaging

1.04_01 2017-06-21T06:55:28Z

   - added update_and_(fetch|emulate)_row method (mamimumemoomoo)

1.04 2017-05-28T13:03:12Z

   - fixed range condition maker (thanks mamimumemoomoo)
   - namespace cleaner switched to namespace::autoclean (thanks karenetheridge)
   - throw more intelligibly error when calling update without data (thanks GeJ)
   - droped typoed (obsoluted) `make_range_condtion` method

1.03 2017-03-29T11:24:39Z

   - [EXPERIMENTAL] x_static_install=1 (no feature changes)

1.02 2017-02-10T06:14:56Z

   - added lt/gt alias option for lower/upper (watanabe-yoichi)

META.json  view on Meta::CPAN

            "Mouse::Role" : "0",
            "Mouse::Util::TypeConstraints" : "0",
            "SQL::Maker" : "1.19",
            "SQL::Maker::SQLType" : "0",
            "SQL::NamedPlaceholder" : "0",
            "SQL::QueryMaker" : "0",
            "SQL::Translator::Schema::Constants" : "0",
            "Scalar::Util" : "0",
            "String::CamelCase" : "0",
            "Try::Tiny" : "0",
            "namespace::autoclean" : "0",
            "parent" : "0",
            "perl" : "5.014002"
         }
      },
      "test" : {
         "recommends" : {
            "DBD::Pg" : "0",
            "DBD::mysql" : "0",
            "Test::mysqld" : "0",
            "Test::postgresql" : "0"

META.yml  view on Meta::CPAN

  Mouse::Role: '0'
  Mouse::Util::TypeConstraints: '0'
  SQL::Maker: '1.19'
  SQL::Maker::SQLType: '0'
  SQL::NamedPlaceholder: '0'
  SQL::QueryMaker: '0'
  SQL::Translator::Schema::Constants: '0'
  Scalar::Util: '0'
  String::CamelCase: '0'
  Try::Tiny: '0'
  namespace::autoclean: '0'
  parent: '0'
  perl: '5.014002'
resources:
  bugtracker: https://github.com/karupanerura/Aniki/issues
  homepage: https://github.com/karupanerura/Aniki
  repository: git://github.com/karupanerura/Aniki.git
version: '1.06'
x_authority: cpan:KARUPA
x_contributors:
  - 'Pine Mizune <pinemz@gmail.com>'

cpanfile  view on Meta::CPAN

requires 'Mouse::Role';
requires 'Mouse::Util::TypeConstraints';
requires 'SQL::Maker', '1.19';
requires 'SQL::Maker::SQLType';
requires 'SQL::NamedPlaceholder';
requires 'SQL::QueryMaker';
requires 'SQL::Translator::Schema::Constants';
requires 'Scalar::Util';
requires 'String::CamelCase';
requires 'Try::Tiny';
requires 'namespace::autoclean';
requires 'parent';
requires 'perl', '5.014002';

recommends 'SQL::Maker::Plugin::JoinSelect';
recommends 'Data::WeightedRoundRobin';

on configure => sub {
    requires 'Module::Build::Tiny', '0.035';
};

lib/Aniki.pm  view on Meta::CPAN

package Aniki;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;

use Module::Load ();
use Aniki::Filter;
use Aniki::Handler;
use Aniki::Row;
use Aniki::Result::Collection;
use Aniki::Schema;
use Aniki::QueryBuilder;
use Aniki::QueryBuilder::Canonical;

lib/Aniki/Filter.pm  view on Meta::CPAN

package Aniki::Filter;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;

has global_inflators => (
    is      => 'ro',
    default => sub { [] },
);

has global_deflators => (
    is      => 'ro',
    default => sub { [] },

lib/Aniki/Handler.pm  view on Meta::CPAN

package Aniki::Handler;
use 5.014002;

use namespace::autoclean;
use Mouse;

use DBIx::Handler 0.12;

has connect_info => (
    is       => 'ro',
    required => 1,
);

has on_connect_do => (

lib/Aniki/Handler/WeightedRoundRobin.pm  view on Meta::CPAN

package Aniki::Handler::WeightedRoundRobin;
use 5.014002;

use namespace::autoclean;
use Mouse;
extends qw/Aniki::Handler/;

use DBI ();
use Data::WeightedRoundRobin;
use Scalar::Util qw/refaddr/;

around BUILDARGS => sub {
    my $orig = shift;
    my $self = shift;

lib/Aniki/Plugin/Count.pm  view on Meta::CPAN

package Aniki::Plugin::Count;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;

use Carp qw/croak/;

requires qw/query_builder dbh/;

sub count {
    my ($self, $table, $column, $where, $opt) = @_;
    $where //= {};
    $column //= '*';

lib/Aniki/Plugin/Pager.pm  view on Meta::CPAN

package Aniki::Plugin::Pager;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;

use Carp qw/croak/;

requires qw/select/;
with qw/Aniki::Plugin::PagerInjector/;
with qw/Aniki::Plugin::RangeConditionMaker/;

sub select_with_pager {
    my ($self, $table_name, $where, $opt) = @_;

lib/Aniki/Plugin/PagerInjector.pm  view on Meta::CPAN

package Aniki::Plugin::PagerInjector;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;
use Data::Page::NoTotalEntries;
use Aniki::Result::Role::Pager;

requires qw/guess_result_class/;

sub inject_pager_to_result {
    my ($self, $result, $opt) = @_;
    my $table_name = $result->table_name;

lib/Aniki/Plugin/RangeConditionMaker.pm  view on Meta::CPAN

package Aniki::Plugin::RangeConditionMaker;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;

use Carp qw/carp croak/;
use SQL::QueryMaker qw/sql_gt sql_lt sql_ge sql_le sql_and/;

sub make_range_condition {
    my ($self, $range) = @_;

    my %total_range_condition;
    for my $type (qw/lower upper gt lt ge le/) {

lib/Aniki/Plugin/SQLPager.pm  view on Meta::CPAN

package Aniki::Plugin::SQLPager;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;

requires qw/select_by_sql select_named/;
with qw/Aniki::Plugin::PagerInjector/;

sub select_by_sql_with_pager {
    my ($self, $sql, $bind, $opt) = @_;
    $opt //= {};

    my $page = $opt->{page} or Carp::croak("required parameter: page");

lib/Aniki/Plugin/SelectJoined.pm  view on Meta::CPAN

package Aniki::Plugin::SelectJoined;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;
use Aniki::QueryBuilder;
use Aniki::Result::Collection::Joined;
use Carp qw/croak/;

requires qw/schema query_builder suppress_row_objects txn_manager execute/;

Aniki::QueryBuilder->load_plugin('JoinSelect');

sub select_joined {

lib/Aniki/Plugin/WeightedRoundRobin.pm  view on Meta::CPAN

package Aniki::Plugin::WeightedRoundRobin;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;

use Aniki::Handler::WeightedRoundRobin;

sub handler_class { 'Aniki::Handler::WeightedRoundRobin' }

1;
__END__

=pod

lib/Aniki/Result.pm  view on Meta::CPAN

package Aniki::Result;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;

has table_name => (
    is       => 'ro',
    required => 1,
);

has suppress_row_objects => (
    is      => 'rw',
    lazy    => 1,

lib/Aniki/Result/Collection.pm  view on Meta::CPAN

package Aniki::Result::Collection;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
extends qw/Aniki::Result/;

use overload
    '@{}'    => sub { shift->rows },
    fallback => 1;

has row_datas => (
    is       => 'ro',
    required => 1,

lib/Aniki/Result/Collection/Joined.pm  view on Meta::CPAN

package Aniki::Result::Collection::Joined;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
extends qw/Aniki::Result::Collection/;

use Carp qw/croak/;
use Aniki::Row::Joined;
use List::MoreUtils qw/none/;
use List::UtilsBy qw/uniq_by/;
use Scalar::Util qw/refaddr/;

has '+table_name' => (

lib/Aniki/Result/Role/Pager.pm  view on Meta::CPAN

package Aniki::Result::Role::Pager;
use 5.014002;

use namespace::autoclean;
use Mouse::Role;
use Mouse::Util::TypeConstraints qw/duck_type/;

has pager => (
    is  => 'rw',
    isa => duck_type(qw/entries_per_page current_page entries_on_this_page/),
);

1;
__END__

lib/Aniki/Row.pm  view on Meta::CPAN

package Aniki::Row;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
use Carp qw/croak/;

has table_name => (
    is       => 'ro',
    required => 1,
);

has row_data => (
    is       => 'ro',

lib/Aniki/Schema.pm  view on Meta::CPAN

package Aniki::Schema;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;

use SQL::Translator::Schema::Constants;
use Carp qw/croak/;
use Aniki::Schema::Table;

has schema_class => (
    is       => 'ro',
    required => 1,
);

lib/Aniki/Schema/Relationship.pm  view on Meta::CPAN

package Aniki::Schema::Relationship;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
use Aniki::Schema::Relationship::Fetcher;
use Lingua::EN::Inflect qw/PL/;
use Hash::Util::FieldHash qw/fieldhash/;

our @WORD_SEPARATORS = ('-', '_', ' ');

has schema => (
    is       => 'ro',
    required => 1,

lib/Aniki/Schema/Relationship/Fetcher.pm  view on Meta::CPAN

package Aniki::Schema::Relationship::Fetcher;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;

has relationship => (
    is       => 'ro',
    weak_ref => 1,
    required => 1,
);

use List::MoreUtils qw/pairwise notall/;
use List::UtilsBy qw/partition_by/;

lib/Aniki/Schema/Relationships.pm  view on Meta::CPAN

package Aniki::Schema::Relationships;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
use SQL::Translator::Schema::Constants;
use Aniki::Schema::Relationship;

has schema => (
    is       => 'ro',
    required => 1,
    weak_ref => 1,
);

lib/Aniki/Schema/Table.pm  view on Meta::CPAN

package Aniki::Schema::Table;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
use Carp qw/croak/;
use Aniki::Schema::Relationships;
use Aniki::Schema::Table::Field;
use Aniki::Schema::Table::PrimaryKey;
use SQL::Translator::Schema::Constants;

has _schema => (
    is       => 'ro',
    required => 1,

lib/Aniki/Schema/Table/Field.pm  view on Meta::CPAN

package Aniki::Schema::Table::Field;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
use Carp qw/croak/;

has _field => (
    is       => 'ro',
    required => 1,
);

has name => (
    is      => 'ro',

lib/Aniki/Schema/Table/PrimaryKey.pm  view on Meta::CPAN

package Aniki::Schema::Table::PrimaryKey;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;
use Aniki::Schema::Table::Field;
use Carp qw/croak/;

has _primary_key => (
    is       => 'ro',
    required => 1,
);

has _fields => (

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 2.830 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-c98054f2a92 )