X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=scpubgit%2FQ-Branch.git;a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FPlugin%2FExtraClauses.pm;fp=lib%2FSQL%2FAbstract%2FExtraClauses.pm;h=10d58394296fac8e137d9747e11d66fc109954ff;hp=e1029bcd247bad056d5a0c4e1b88dc434f808b43;hb=d10d5b94f1f9b2aec782007c6f528755e1b93cee;hpb=e376aa8053a377ca85e9a16205132b30436b2ce5 diff --git a/lib/SQL/Abstract/ExtraClauses.pm b/lib/SQL/Abstract/Plugin/ExtraClauses.pm similarity index 96% rename from lib/SQL/Abstract/ExtraClauses.pm rename to lib/SQL/Abstract/Plugin/ExtraClauses.pm index e1029bc..10d5839 100644 --- a/lib/SQL/Abstract/ExtraClauses.pm +++ b/lib/SQL/Abstract/Plugin/ExtraClauses.pm @@ -1,40 +1,8 @@ -package SQL::Abstract::ExtraClauses; +package SQL::Abstract::Plugin::ExtraClauses; use Moo; -has sqla => ( - is => 'ro', init_arg => undef, - handles => [ qw( - expand_expr render_aqt join_query_parts - ) ], -); - -sub cb { - my ($self, $method, @args) = @_; - return sub { - local $self->{sqla} = shift; - $self->$method(@args, @_) - }; -} - -sub register { - my ($self, @pairs) = @_; - my $sqla = $self->sqla; - while (my ($method, $cases) = splice(@pairs, 0, 2)) { - my @cases = @$cases; - while (my ($name, $case) = splice(@cases, 0, 2)) { - $sqla->$method($name, $self->cb($case)); - } - } - return $self; -} - -sub apply_to { - my ($self, $sqla) = @_; - $self = $self->new unless ref($self); - local $self->{sqla} = $sqla; - $self->register_extensions($sqla); -} +with 'SQL::Abstract::Role::Plugin'; sub register_extensions { my ($self, $sqla) = @_;