1 package OpenILS::Application::Storage;
2 use OpenSRF::Application;
3 use base qw/OpenSRF::Application/;
5 use OpenSRF::EX qw/:try/;
6 use OpenSRF::Utils::Logger qw/:level/;
8 my $log = "OpenSRF::Utils::Logger";
20 return $_db_driver if (defined $_db_driver);
21 my $conf = OpenSRF::Utils::SettingsClient->new;
23 $log->debug('Initializing ' . __PACKAGE__ . '...', DEBUG);
25 my $driver = $conf->get_value( apps => storage => app_settings => databases => 'driver');
26 my $_db_params = $conf->get_value( apps => storage => app_settings => databases => 'database');
28 $_db_driver = "OpenILS::App::Storage::Driver::$driver";
31 eval "use $_db_driver;";
32 throw OpenILS::EX::Config ( "Can't load $_db_driver! : $@" ) if ($@);
34 $_db_driver->initialize if ($_db_driver->can('initialize'));
36 push @OpenILS::Application::Storage::CDBI::ISA, $_db_driver;
42 $log->debug('Running child_init for ' . __PACKAGE__ . '...', DEBUG);
43 $_db_driver->child_init if ($_db_driver->can('child_init'));
45 return 1 if ($_db_driver->db_Main($_db_params));
49 sub getBiblioFieldMaps {
53 $log->debug(" Executing [".$self->method."] as [".$self->api_name."]",INTERNAL);
55 if ($self->api_name =~ /by_class$/) {
57 return _cdbi2Hash( config::metarecord_field_map->search( fieldclass => $id ) );
59 throw OpenSRF::EX::InvalidArg ('Please give me a Class to look up!');
63 return _cdbi2Hash( config::metarecord_field_map->retrieve( $id ) );
65 return _cdbi_list2AoH( config::metarecord_field_map->retrieve_all );
69 __PACKAGE__->register_method(
70 method => 'getBiblioFieldMaps',
71 api_name => 'open-ils.storage.config.metarecord_field',
74 __PACKAGE__->register_method(
75 method => 'getBiblioFieldMaps',
76 api_name => 'open-ils.storage.config.metarecord_field.list',
79 __PACKAGE__->register_method(
80 method => 'getBiblioFieldMaps',
81 api_name => 'open-ils.storage.config.metarecord_field.list.by_class',
86 sub getBiblioFieldMapClasses {
91 $log->debug(" Executing [".$self->method."] as [".$self->api_name."]",INTERNAL);
94 return _cdbi2Hash( config::metarecord_field_class_map->retrieve( $id ) );
96 return _cdbi_list2AoH( config::metarecord_field_class_map->retrieve_all );
99 __PACKAGE__->register_method(
100 method => 'getBiblioFieldMapClasses',
101 api_name => 'open-ils.storage.config.metarecord_field_class',
104 __PACKAGE__->register_method(
105 method => 'getBiblioFieldMapClasses',
106 api_name => 'open-ils.storage.config.metarecord_field_class.list',
112 return { map { ( $_ => $obj->$_ ) } $obj->columns };
117 return [ map { _cdbi2oilsHash($_) } @objs ];
120 #-------------------------------------------------------------------------------
121 package OpenILS::App::Storage::CDBI;