]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm
bug fixes for transaction interface
[working/Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Storage / Publisher / biblio.pm
1 package OpenILS::Application::Storage::Publisher::biblio;
2 use base qw/OpenILS::Application::Storage/;
3 use OpenILS::Application::Storage::CDBI::biblio;
4
5 sub create_record_node {
6         my $self = shift;
7         my $client = shift;
8         my $node = shift;;
9
10         my $n = biblio::record_node->create($node);
11         return $n->id;
12 }
13 __PACKAGE__->register_method(
14         method          => 'create_record_node',
15         api_name        => 'open-ils.storage.biblio.record_node.create',
16         api_level       => 1,
17         argc            => 1,
18 );
19
20 sub update_record_node {
21         my $self = shift;
22         my $client = shift;
23         my $node = shift;;
24
25         my $n = biblio::record_node->retrieve($$node{id});
26         return undef unless ($n);
27
28         for my $field ( keys %$node ) {
29                 $n->$field( $$node{$field} );
30         }
31
32         $n->update;
33         return $n->id;
34 }
35 __PACKAGE__->register_method(
36         method          => 'update_record_node',
37         api_name        => 'open-ils.storage.biblio.record_node.update',
38         api_level       => 1,
39         argc            => 1,
40 );
41
42
43 sub create_record_nodeset {
44         my $self = shift;
45         my $client = shift;
46
47         my $method = $self->method_lookup('open-ils.storage.biblio.record_node.create');
48
49         my @ids;
50         while ( my $node = shift(@_) ) {
51                 $client->respond( $method->run( $node ) );
52         }
53         return undef;
54 }
55 __PACKAGE__->register_method(
56         method          => 'create_record_nodeset',
57         api_name        => 'open-ils.storage.biblio.record_node.batch.create',
58         api_level       => 1,
59         argc            => 1,
60 );
61
62 sub create_record_entry {
63         my $self = shift;
64         my $client = shift;
65         my $metadata = shift;
66
67         my $rec = biblio::record_entry->create($metadata);
68         return $rec->id;
69 }
70 __PACKAGE__->register_method(
71         method          => 'create_record_entry',
72         api_name        => 'open-ils.storage.biblio.record_entry.create',
73         api_level       => 1,
74         argc            => 2,
75         note            => <<TEXT,
76
77 Params should be passed as a hash ref! 
78 Required fields are:
79
80         creator
81         editor
82
83 Please at least try to fill in:
84
85         tcn_source
86         tcn_value
87         metarecord
88         source
89         active
90
91 TEXT
92
93 );
94
95 sub update_record_entry {
96         my $self = shift;
97         my $client = shift;
98         my $entry = shift;
99
100         my $rec = biblio::record_entry->retrieve($$entry{id});
101         return undef unless ($rec);
102
103         for my $field ( keys %$node ) {
104                 $rec->$field( $$node{$field} );
105         }
106
107         $rec->update;
108         return $rec->id;
109 }
110 __PACKAGE__->register_method(
111         method          => 'update_record_node',
112         api_name        => 'open-ils.storage.biblio.record_node.update',
113         api_level       => 1,
114         argc            => 1,
115 );
116
117
118
119 sub get_record_entry {
120         my $self = shift;
121         my $client = shift;
122         my @ids = @_;
123
124         for my $id ( @ids ) {
125                 next unless ($id);
126                 
127                 my $rec = biblio::record_entry->retrieve($id);
128                 $client->respond( $self->_cdbi2Hash( $rec ) ) if ($rec);
129
130                 last if ($self->api_name !~ /list/o);
131         }
132         return undef;
133 }
134 __PACKAGE__->register_method(
135         method          => 'get_record_entry',
136         api_name        => 'open-ils.storage.biblio.record_entry.retrieve',
137         api_level       => 1,
138         argc            => 1,
139 );
140 __PACKAGE__->register_method(
141         method          => 'get_record_entry',
142         api_name        => 'open-ils.storage.biblio.record_entry.retrieve.list',
143         api_level       => 1,
144         argc            => 1,
145         stream          => 1,
146 );
147
148 sub get_record_node {
149         my $self = shift;
150         my $client = shift;
151         my @ids = @_;
152
153         for my $id ( @ids ) {
154                 next unless ($id);
155                 
156                 my $rec = biblio::record_node->retrieve($id);
157                 $client->respond( $self->_cdbi2Hash( $rec ) ) if ($rec);
158
159                 last if ($self->api_name !~ /list/o);
160         }
161         return undef;
162 }
163 __PACKAGE__->register_method(
164         method          => 'get_record_node',
165         api_name        => 'open-ils.storage.biblio.record_node.retrieve',
166         api_level       => 1,
167         argc            => 1,
168 );
169 __PACKAGE__->register_method(
170         method          => 'get_record_node',
171         api_name        => 'open-ils.storage.biblio.record_node.retrieve.list',
172         api_level       => 1,
173         argc            => 1,
174         stream          => 1,
175 );
176
177 sub get_record_nodeset {
178         my $self = shift;
179         my $client = shift;
180         my @ids = @_;
181
182         for my $id ( @ids ) {
183                 next unless ($id);
184                 
185                 $client->respond(
186                         $self->_cdbi_list2AoH(
187                                 biblio::record_node->search(
188                                         owner_doc => $id, { order_by => 'intra_doc_id' }
189                                 )
190                         )
191                 );
192
193                 last if ($self->api_name !~ /list/o);
194         }
195         return undef;
196 }
197 __PACKAGE__->register_method(
198         method          => 'get_record_nodeset',
199         api_name        => 'open-ils.storage.biblio.record_entry.nodeset.retrieve',
200         api_level       => 1,
201         argc            => 1,
202 );
203 __PACKAGE__->register_method(
204         method          => 'get_record_nodeset',
205         api_name        => 'open-ils.storage.biblio.record_entry.nodeset.retrieve.list',
206         api_level       => 1,
207         argc            => 1,
208         stream          => 1,
209 );
210
211
212 1;