diff --git a/Build.PL b/Build.PL index b4c75178..b05eb986 100644 --- a/Build.PL +++ b/Build.PL @@ -15,6 +15,7 @@ my $builder = Module::Build->new( 'DBIx::Class::Schema::Loader' => 0, 'File::Path' => 0, 'Getopt::Long' => 0, + 'Module::Runtime' => 0, 'MooseX::ClassAttribute' => 0, 'MooseX::FileAttribute' => 0, 'MooseX::NonMoose' => 0, diff --git a/lib/NGCP/Schema.pm b/lib/NGCP/Schema.pm index 6d104646..9c61f657 100644 --- a/lib/NGCP/Schema.pm +++ b/lib/NGCP/Schema.pm @@ -1,6 +1,7 @@ package NGCP::Schema; use Sipwise::Base; use aliased 'NGCP::Schema::Exception'; +use Module::Runtime qw(use_module); use NGCP::Schema::Config qw(); use Regexp::Common qw(net); use Regexp::IPv6 qw($IPv6_re); @@ -9,18 +10,25 @@ extends 'DBIx::Class::Schema'; our $VERSION = '2.004'; -__PACKAGE__->load_namespaces( - default_resultset_class => 'ResultSet', -); - class_has('config', is => 'rw', isa => 'NGCP::Schema::Config', lazy => 1, default => sub { return NGCP::Schema::Config->instance; }); +$CLASS->register_sources('admins'); + method connection { $self->SUPER::connection($self->config->as_hash->{ngcp_connect_info}); } +sub register_sources { + my ($self, @source_names) = @_; + for my $source_name (@source_names) { + my $module_name = "NGCP::Schema::Result::$source_name"; + use_module($module_name); + $self->register_class($source_name => $module_name); + } +} + method validate($data, $mandatory_params, $optional_params?) { Exception->throw({ description => 'Client.Syntax.MissingParam',