DBIx-NoSQL
view release on metacpan or search on metacpan
lib/DBIx/NoSQL/ClassScaffold.pm view on Meta::CPAN
$package->table( '__Store__' );
$package->add_columns(
__model__ => {
data_type => 'text',
},
__key__ => {
data_type => 'text',
},
__value__ => {
data_type => 'text',
default_value => '{}',
},
);
$package->set_primary_key(qw/ __model__ __key__ /);
return $self;
}
package DBIx::NoSQL::ClassScaffold::Schema;
our $AUTHORITY = 'cpan:YANICK';
$DBIx::NoSQL::ClassScaffold::Schema::VERSION = '0.0021';
use Moose;
extends qw/ DBIx::Class::Schema /;
use JSON; our $json = JSON->new->pretty;
use Digest::SHA qw/ sha1_hex /;
has store => qw/ is rw weak_ref 1 /;
has deployment_statements => qw/ accessor _deployment_statements lazy_build 1 /;
sub _build_deployment_statements {
return shift->build_deployment_statements;
}
sub build_deployment_statements {
my $self = shift;
my $sql = $self->deployment_statements( undef, undef, undef, { add_drop_table => 1 } );
$sql =~ s/^--[^\n]*$//gsm;
return $sql;
}
around deployment_statements => sub {
my $inner = shift;
my $self = shift;
return $inner->( $self, @_ ) if @_;
return $self->_deployment_statements;
};
has version => qw/ is ro lazy_build 1 /;
sub _build_version {
my $self = shift;
return sha1_hex( $self->sql );
}
sub deploy {
my $self = shift;
my $deployment_statements = $self->deployment_statements;
s/^\s*//, s/\s*$// for $deployment_statements;
my @deployment_statements = split m/;\n\s*/, $deployment_statements;
$self->store->storage->do( $_ ) for @deployment_statements;
}
package DBIx::NoSQL::ClassScaffold::ResultClass;
our $AUTHORITY = 'cpan:YANICK';
$DBIx::NoSQL::ClassScaffold::ResultClass::VERSION = '0.0021';
use strict;
use warnings;
use base qw/ DBIx::Class::Core /;
sub register {
my $class = shift;
my $schema_class = shift;
my $moniker = shift;
$schema_class->register_class( $moniker => $class );
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
DBIx::NoSQL::ClassScaffold
=head1 VERSION
version 0.0021
=head1 AUTHORS
=over 4
=item *
Robert Krimen <robertkrimen@gmail.com>
=item *
Yanick Champoux <yanick@cpan.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Robert Krimen.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
( run in 1.448 second using v1.01-cache-2.11-cpan-98e64b0badf )