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 {
54 my $rec = biblio::record_entry->update($entry);
55 return 0 unless ($rec);
58 __PACKAGE__->register_method(
59 method => 'update_record_entry',
60 api_name => 'open-ils.storage.biblio.record_entry.update',
65 sub delete_record_entry {
70 my $rec = biblio::record_entry->delete($entry);
71 return 0 unless ($rec);
74 __PACKAGE__->register_method(
75 method => 'delete_record_entry',
76 api_name => 'open-ils.storage.biblio.record_entry.delete',
81 sub search_record_entry_one_field {
86 (my $search_field = $self->api_name) =~ s/^.*\.search\.([^\.]+).*?$/$1/o;
91 for my $rec ( biblio::record_entry->fast_fieldmapper($search_field => "$id") ) {
92 $client->respond( $rec ) if ($rec);
95 last if ($self->api_name !~ /list/o);
99 __PACKAGE__->register_method(
100 method => 'search_record_entry_one_field',
101 api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value',
106 __PACKAGE__->register_method(
107 method => 'search_record_entry_one_field',
108 api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value.list',
114 sub get_record_entry {
119 for my $id ( @ids ) {
122 my ($rec) = biblio::record_entry->fast_fieldmapper($id);
123 $client->respond( $rec ) if ($rec);
125 last if ($self->api_name !~ /list/o);
129 __PACKAGE__->register_method(
130 method => 'get_record_entry',
131 api_name => 'open-ils.storage.biblio.record_entry.retrieve',
135 __PACKAGE__->register_method(
136 method => 'get_record_entry',
137 api_name => 'open-ils.storage.biblio.record_entry.retrieve.list',
143 sub create_record_node {
149 my $n = biblio::record_node->create($node);
150 $client->respond( $n->id );
152 $client->respond( 0 );
157 __PACKAGE__->register_method(
158 method => 'create_record_node',
159 api_name => 'open-ils.storage.biblio.record_node.create',
164 sub update_record_node {
169 my $n = biblio::record_node->update($node);
170 return 0 unless ($n);
173 __PACKAGE__->register_method(
174 method => 'update_record_node',
175 api_name => 'open-ils.storage.biblio.record_node.update',
180 sub delete_record_node {
185 my $rec = biblio::record_node->delete($node);
186 return 0 unless ($rec);
189 __PACKAGE__->register_method(
190 method => 'delete_record_node',
191 api_name => 'open-ils.storage.biblio.record_node.delete',
196 sub get_record_node {
201 for my $id ( @ids ) {
204 my ($rec) = biblio::record_node->fast_fieldmapper($id);
205 $client->respond( $rec ) if ($rec);
207 last if ($self->api_name !~ /list/o);
211 __PACKAGE__->register_method(
212 method => 'get_record_node',
213 api_name => 'open-ils.storage.biblio.record_node.retrieve',
217 __PACKAGE__->register_method(
218 method => 'get_record_node',
219 api_name => 'open-ils.storage.biblio.record_node.retrieve.list',
225 sub create_record_nodeset {
230 my $method = $self->method_lookup('open-ils.storage.biblio.record_node.create');
233 while ( my $node = shift(@nodes) ) {
234 my ($res) = $method->run( $node );
235 push @success, $res if ($res);
238 my $insert_total = 0;
239 $insert_total += $_ for (@success);
241 return $insert_total;
243 __PACKAGE__->register_method(
244 method => 'create_record_nodeset',
245 api_name => 'open-ils.storage.biblio.record_node.batch.create',
250 sub update_record_nodeset {
254 my $method = $self->method_lookup('open-ils.storage.biblio.record_node.update');
257 while ( my $node = shift(@_) ) {
258 my ($res) = $method->run( $node );
259 push @success, $res if ($res);
262 my $update_total = 0;
263 $update_total += $_ for (@success);
265 return $update_total;
267 __PACKAGE__->register_method(
268 method => 'create_record_nodeset',
269 api_name => 'open-ils.storage.biblio.record_node.batch.update',
274 sub delete_record_nodeset {
278 my $method = $self->method_lookup('open-ils.storage.biblio.record_node.delete');
281 while ( my $node = shift(@_) ) {
282 my ($res) = $method->run( $node );
283 push @success, $res if ($res);
286 my $delete_total = 0;
287 $delete_total += $_ for (@success);
289 return $delete_total;
291 __PACKAGE__->register_method(
292 method => 'create_record_nodeset',
293 api_name => 'open-ils.storage.biblio.record_node.batch.delete',
298 sub get_record_nodeset {
303 for my $id ( @ids ) {
306 $client->respond( [biblio::record_node->fast_fieldmapper( owner_doc => "$id", {order_by => 'intra_doc_id'} )] );
308 last if ($self->api_name !~ /list/o);
312 __PACKAGE__->register_method(
313 method => 'get_record_nodeset',
314 api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve',
318 __PACKAGE__->register_method(
319 method => 'get_record_nodeset',
320 api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve.list',