—use
utf8;
package
Pinto::Schema;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
use
Moose;
__PACKAGE__->load_namespaces;
# Created by DBIx::Class::Schema::Loader v0.07015 @ 2012-04-29 01:03:56
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:yRlbDgtAuKaDHF9i1Kwqsg
#-------------------------------------------------------------------------------
# ABSTRACT: The DBIx::Class::Schema for Pinto
#-------------------------------------------------------------------------------
our
$VERSION
=
'0.0994_03'
;
# VERSION
#-------------------------------------------------------------------------------
use
MooseX::SetOnce;
#-------------------------------------------------------------------------------
use
Readonly;
Readonly
our
$SCHEMA_VERSION
=> 1;
sub
schema_version {
return
$SCHEMA_VERSION
}
#-------------------------------------------------------------------------------
has
repo
=> (
is
=>
'rw'
,
isa
=>
'Pinto::Repository'
,
traits
=> [
qw(SetOnce)
],
weak_ref
=> 1,
);
#-------------------------------------------------------------------------------
sub
set_db_version {
my
(
$self
) =
@_
;
# NOTE: SQLite only permits integers for the user_version.
# The decimal portion of any float will be truncated.
my
$version
=
$self
->schema_version;
my
$dbh
=
$self
->storage->dbh;
$dbh
->
do
(
"PRAGMA user_version = $version"
);
return
;
}
#-------------------------------------------------------------------------------
sub
get_db_version {
my
(
$self
) =
@_
;
my
$dbh
=
$self
->storage->dbh;
my
@version
=
$dbh
->selectrow_array(
'PRAGMA user_version'
);
return
$version
[0];
}
#-------------------------------------------------------------------------------
sub
assert_db_version_ok {
my
(
$self
) =
@_
;
my
$schema_version
=
$self
->schema_version;
my
$db_version
=
$self
->get_db_version;
throw
"Database version ($db_version) and schema version ($schema_version) do not match"
if
$db_version
!=
$schema_version
;
return
$self
;
}
#-------------------------------------------------------------------------------
sub
resultset_names {
my
(
$class
) =
@_
;
my
@resultset_names
=
sort
keys
%{
$class
->source_registrations };
return
@resultset_names
;
}
#-------------------------------------------------------------------------------
for
my
$rs
( __PACKAGE__->resultset_names ) {
## no critic
no
strict
'refs'
;
my
$rs_decameled
= decamelize(
$rs
);
my
$rs_method_name
= __PACKAGE__ .
"::${rs_decameled}_rs"
;
*{
$rs_method_name
} =
eval
"sub { return \$_[0]->resultset('$rs') }"
;
my
$create_method_name
= __PACKAGE__ .
"::create_${rs_decameled}"
;
*{
$create_method_name
} =
eval
"sub { return \$_[0]->$rs_method_name->create(\$_[1]) }"
;
my
$search_method_name
= __PACKAGE__ .
"::search_${rs_decameled}"
;
*{
$search_method_name
} =
eval
"sub { return \$_[0]->$rs_method_name->search(\$_[1] || {}, \$_[2] || {}) }"
;
my
$find_method_name
= __PACKAGE__ .
"::find_${rs_decameled}"
;
*{
$find_method_name
} =
eval
"sub { return \$_[0]->$rs_method_name->find(\$_[1] || {}, \$_[2] || {}) }"
;
## use critic
}
#-------------------------------------------------------------------------------
__PACKAGE__->meta->make_immutable;
#-------------------------------------------------------------------------------
1;
__END__
=pod
=encoding UTF-8
=for :stopwords Jeffrey Ryan Thalhammer BenRifkah Fowler Jakob Voss Karen Etheridge Michael
G. Bergsten-Buret Schwern Oleg Gashev Steffen Schwigon Tommy Stanton
Wolfgang Kinkeldei Yanick Boris Champoux brian d foy hesco popl Däppen Cory
G Watson David Steinbrunner Glenn
=head1 NAME
Pinto::Schema - The DBIx::Class::Schema for Pinto
=head1 VERSION
version 0.0994_03
=head1 AUTHOR
Jeffrey Ryan Thalhammer <jeff@stratopan.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Jeffrey Ryan Thalhammer.
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