1 package OpenILS::Application::Storage::Publisher::biblio;
2 use base qw/OpenILS::Application::Storage/;
4 use OpenSRF::EX qw/:try/;
5 use OpenILS::Application::Storage::CDBI::biblio;
6 use OpenILS::Utils::Fieldmapper;
10 sub create_record_entry {
16 my $rec = biblio::record_entry->create($metadata);
17 $client->respond( $rec->id );
19 $client->respond( 0 );
24 __PACKAGE__->register_method(
25 method => 'create_record_entry',
26 api_name => 'open-ils.storage.biblio.record_entry.create',
31 Params should be passed as a hash ref!
37 Please at least try to fill in:
49 sub update_record_entry {
56 $success = biblio::record_entry->update($entry);
63 __PACKAGE__->register_method(
64 method => 'update_record_entry',
65 api_name => 'open-ils.storage.biblio.record_entry.update',
70 sub delete_record_entry {
75 my $rec = biblio::record_entry->delete($entry);
76 return 0 unless ($rec);
79 __PACKAGE__->register_method(
80 method => 'delete_record_entry',
81 api_name => 'open-ils.storage.biblio.record_entry.delete',
86 sub search_record_entry_one_field {
91 (my $search_field = $self->api_name) =~ s/^.*\.search\.([^\.]+).*?$/$1/o;
96 for my $rec ( biblio::record_entry->fast_fieldmapper($search_field => "$id") ) {
97 $client->respond( $rec ) if ($rec);
100 last if ($self->api_name !~ /list/o);
104 __PACKAGE__->register_method(
105 method => 'search_record_entry_one_field',
106 api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value',
111 __PACKAGE__->register_method(
112 method => 'search_record_entry_one_field',
113 api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value.list',
119 sub get_record_entry {
124 for my $id ( @ids ) {
127 my ($rec) = biblio::record_entry->fast_fieldmapper($id);
128 $client->respond( $rec ) if ($rec);
130 last if ($self->api_name !~ /list/o);
134 __PACKAGE__->register_method(
135 method => 'get_record_entry',
136 api_name => 'open-ils.storage.biblio.record_entry.retrieve',
140 __PACKAGE__->register_method(
141 method => 'get_record_entry',
142 api_name => 'open-ils.storage.biblio.record_entry.retrieve.list',
148 sub create_record_node {
154 my $n = biblio::record_node->create($node);
155 $client->respond( $n->id );
157 $client->respond( 0 );
162 __PACKAGE__->register_method(
163 method => 'create_record_node',
164 api_name => 'open-ils.storage.biblio.record_node.create',
169 sub update_record_node {
176 $success = biblio::record_node->update($node);
183 __PACKAGE__->register_method(
184 method => 'update_record_node',
185 api_name => 'open-ils.storage.biblio.record_node.update',
190 sub delete_record_node {
195 my $rec = biblio::record_node->delete($node);
196 return 0 unless ($rec);
199 __PACKAGE__->register_method(
200 method => 'delete_record_node',
201 api_name => 'open-ils.storage.biblio.record_node.delete',
206 sub get_record_node {
211 for my $id ( @ids ) {
214 my ($rec) = biblio::record_node->fast_fieldmapper($id);
215 $client->respond( $rec ) if ($rec);
217 last if ($self->api_name !~ /list/o);
221 __PACKAGE__->register_method(
222 method => 'get_record_node',
223 api_name => 'open-ils.storage.biblio.record_node.retrieve',
227 __PACKAGE__->register_method(
228 method => 'get_record_node',
229 api_name => 'open-ils.storage.biblio.record_node.retrieve.list',
235 sub create_record_nodeset {
240 my $method = $self->method_lookup('open-ils.storage.biblio.record_node.create');
243 while ( my $node = shift(@nodes) ) {
244 my ($res) = $method->run( $node );
245 push(@success, $res) if ($res >= 0);
248 my $insert_total = 0;
249 $insert_total += $_ for (@success);
251 return $insert_total;
253 __PACKAGE__->register_method(
254 method => 'create_record_nodeset',
255 api_name => 'open-ils.storage.biblio.record_node.batch.create',
260 sub update_record_nodeset {
265 my $method = $self->method_lookup('open-ils.storage.biblio.record_node.update');
268 while ( my $node = shift(@stuff) ) {
269 my ($res) = $method->run( $node );
270 push(@success, $res) if ($res >= 0);
274 $update_total += $_ for (@success);
276 return $update_total;
278 __PACKAGE__->register_method(
279 method => 'update_record_nodeset',
280 api_name => 'open-ils.storage.biblio.record_node.batch.update',
285 sub delete_record_nodeset {
289 my $method = $self->method_lookup('open-ils.storage.biblio.record_node.delete');
292 while ( my $node = shift(@_) ) {
293 my ($res) = $method->run( $node );
294 push(@success, $res) if ($res >= 0);
297 my $delete_total = 0;
298 $delete_total += $_ for (@success);
300 return $delete_total;
302 __PACKAGE__->register_method(
303 method => 'delete_record_nodeset',
304 api_name => 'open-ils.storage.biblio.record_node.batch.delete',
309 sub get_record_nodeset {
314 for my $id ( @ids ) {
317 $client->respond( [biblio::record_node->fast_fieldmapper( owner_doc => "$id", {order_by => 'intra_doc_id'} )] );
319 last if ($self->api_name !~ /list/o);
323 __PACKAGE__->register_method(
324 method => 'get_record_nodeset',
325 api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve',
329 __PACKAGE__->register_method(
330 method => 'get_record_nodeset',
331 api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve.list',