skala 0.3.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -4
- data/Gemfile +10 -1
- data/LICENSE.txt +17 -18
- data/README.md +1 -34
- data/README.primo_adapter.md +42 -0
- data/bin/console +11 -0
- data/config/initializers/skala.rb +5 -0
- data/config/skala.yml +65 -0
- data/db/migrate/20141006133522_create_skala_users.rb +13 -0
- data/db/migrate/20141006133649_create_skala_user_watch_lists.rb +14 -0
- data/db/migrate/20141006135644_create_skala_user_watch_list_entries.rb +13 -0
- data/db/migrate/20141006140435_create_skala_user_notes.rb +16 -0
- data/lib/skala.rb +36 -3
- data/lib/skala/adapter.rb +122 -4
- data/lib/skala/adapter/authenticate_user.rb +4 -0
- data/lib/skala/adapter/create_user_hold_request.rb +7 -0
- data/lib/skala/adapter/create_user_hold_request/result.rb +10 -0
- data/lib/skala/adapter/delete_user_hold_request.rb +7 -0
- data/lib/skala/adapter/get_record_holdable_items.rb +5 -0
- data/lib/skala/adapter/get_record_holdable_items/result.rb +14 -0
- data/lib/skala/adapter/get_record_items.rb +5 -0
- data/lib/skala/adapter/get_record_items/result.rb +14 -0
- data/lib/skala/adapter/get_records.rb +5 -0
- data/lib/skala/adapter/get_records/result.rb +28 -0
- data/lib/skala/adapter/get_user.rb +4 -0
- data/lib/skala/adapter/get_user_former_loans.rb +5 -0
- data/lib/skala/adapter/get_user_former_loans/result.rb +14 -0
- data/lib/skala/adapter/get_user_hold_requests.rb +5 -0
- data/lib/skala/adapter/get_user_hold_requests/result.rb +14 -0
- data/lib/skala/adapter/get_user_inter_library_loans.rb +5 -0
- data/lib/skala/adapter/get_user_inter_library_loans/result.rb +14 -0
- data/lib/skala/adapter/get_user_loans.rb +5 -0
- data/lib/skala/adapter/get_user_loans/result.rb +14 -0
- data/lib/skala/adapter/get_user_transactions.rb +5 -0
- data/lib/skala/adapter/get_user_transactions/result.rb +14 -0
- data/lib/skala/adapter/operation.rb +2 -0
- data/lib/skala/adapter/operation/request.rb +6 -0
- data/lib/skala/adapter/operation/result.rb +7 -0
- data/lib/skala/adapter/renew_user_loan.rb +7 -0
- data/lib/skala/adapter/renew_user_loan/result.rb +7 -0
- data/lib/skala/adapter/renew_user_loans.rb +5 -0
- data/lib/skala/adapter/renew_user_loans/result.rb +9 -0
- data/lib/skala/adapter/search.rb +6 -0
- data/lib/skala/adapter/search/request.rb +91 -0
- data/lib/skala/adapter/search/request/date_histogram_facet.rb +5 -0
- data/lib/skala/adapter/search/request/facet.rb +29 -0
- data/lib/skala/adapter/search/request/histogram_facet.rb +8 -0
- data/lib/skala/adapter/search/request/ids_query.rb +6 -0
- data/lib/skala/adapter/search/request/match_query.rb +7 -0
- data/lib/skala/adapter/search/request/ordered_terms_query.rb +7 -0
- data/lib/skala/adapter/search/request/query.rb +18 -0
- data/lib/skala/adapter/search/request/query_string_query.rb +9 -0
- data/lib/skala/adapter/search/request/range_facet.rb +10 -0
- data/lib/skala/adapter/search/request/range_facet/range.rb +9 -0
- data/lib/skala/adapter/search/request/range_query.rb +8 -0
- data/lib/skala/adapter/search/request/simple_query_string_query.rb +8 -0
- data/lib/skala/adapter/search/request/sort_request.rb +15 -0
- data/lib/skala/adapter/search/request/terms_facet.rb +8 -0
- data/lib/skala/adapter/search/request/unscored_terms_query.rb +7 -0
- data/lib/skala/adapter/search/result.rb +22 -0
- data/lib/skala/adapter/search/result/facet.rb +15 -0
- data/lib/skala/adapter/search/result/histogram_facet.rb +12 -0
- data/lib/skala/adapter/search/result/histogram_facet/entry.rb +8 -0
- data/lib/skala/adapter/search/result/hit.rb +13 -0
- data/lib/skala/adapter/search/result/terms_facet.rb +14 -0
- data/lib/skala/adapter/search/result/terms_facet/term.rb +8 -0
- data/lib/skala/adapter/update_user.rb +4 -0
- data/lib/skala/aleph_adapter.rb +47 -0
- data/lib/skala/aleph_adapter/authenticate_user.rb +27 -0
- data/lib/skala/aleph_adapter/create_user_hold_request.rb +63 -0
- data/lib/skala/aleph_adapter/delete_user_hold_request.rb +29 -0
- data/lib/skala/aleph_adapter/get_record.rb +22 -0
- data/lib/skala/aleph_adapter/get_record_holdable_items.rb +29 -0
- data/lib/skala/aleph_adapter/get_record_items.rb +111 -0
- data/lib/skala/aleph_adapter/get_user.rb +49 -0
- data/lib/skala/aleph_adapter/get_user_former_loans.rb +21 -0
- data/lib/skala/aleph_adapter/get_user_hold_requests.rb +102 -0
- data/lib/skala/aleph_adapter/get_user_inter_library_loans.rb +66 -0
- data/lib/skala/aleph_adapter/get_user_loans.rb +93 -0
- data/lib/skala/aleph_adapter/get_user_transactions.rb +96 -0
- data/lib/skala/aleph_adapter/renew_user_loan.rb +27 -0
- data/lib/skala/aleph_adapter/renew_user_loans.rb +39 -0
- data/lib/skala/aleph_adapter/resolve_user.rb +19 -0
- data/lib/skala/aleph_adapter/update_user.rb +105 -0
- data/lib/skala/common_attributes.rb +19 -0
- data/lib/skala/elasticsearch_adapter.rb +33 -0
- data/lib/skala/elasticsearch_adapter/search.rb +20 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation.rb +20 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_aggregations.rb +50 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_from.rb +10 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb +107 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_size.rb +12 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_sort.rb +18 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_version.rb +10 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation.rb +21 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation/set_facets.rb +44 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation/set_hits.rb +18 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation/set_total_hits.rb +10 -0
- data/lib/skala/engine.rb +14 -0
- data/lib/skala/get_user_result.rb +14 -0
- data/lib/skala/hold_request.rb +24 -0
- data/lib/skala/item.rb +15 -0
- data/lib/skala/loan.rb +18 -0
- data/lib/skala/primo_adapter.rb +34 -0
- data/lib/skala/primo_adapter/get_records.rb +24 -0
- data/lib/skala/primo_adapter/search.rb +13 -0
- data/lib/skala/primo_adapter/search/request_transformation.rb +40 -0
- data/lib/skala/primo_adapter/search/request_transformation/add_queries.rb +97 -0
- data/lib/skala/primo_adapter/search/request_transformation/add_sort_by_list.rb +37 -0
- data/lib/skala/primo_adapter/search/request_transformation/embed_inner_search_request.rb +13 -0
- data/lib/skala/primo_adapter/search/request_transformation/serialize_target_as_xml.rb +11 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_bulk_size.rb +12 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_institution.rb +12 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_languages.rb +15 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_locations.rb +19 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_on_campus.rb +13 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_start_index.rb +12 -0
- data/lib/skala/primo_adapter/search/request_transformation/setup_inner_search_request.rb +33 -0
- data/lib/skala/primo_adapter/search/request_transformation/setup_target.rb +28 -0
- data/lib/skala/primo_adapter/search/request_transformation/toggle_bool_operator.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation.rb +30 -0
- data/lib/skala/primo_adapter/search/result_transformation/add_hits.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation.rb +46 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_creator.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_description.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_edition.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_fulltext_available.rb +12 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_id.rb +11 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb +46 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_is_part_of.rb +14 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_language.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_metadata.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_openurl.rb +23 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_publisher.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_source.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_subject.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_title.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_year_of_publication.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb +108 -0
- data/lib/skala/primo_adapter/search/result_transformation/parse_search_brief_response.rb +20 -0
- data/lib/skala/primo_adapter/search/result_transformation/set_facets.rb +71 -0
- data/lib/skala/primo_adapter/search/result_transformation/set_total_hits.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation/sort_terms_facets_terms.rb +14 -0
- data/lib/skala/primo_adapter/soap_api.rb +15 -0
- data/lib/skala/primo_adapter/soap_api/search_brief.rb +25 -0
- data/lib/skala/record.rb +85 -0
- data/lib/skala/record/identifier.rb +9 -0
- data/lib/skala/record/is_part_of.rb +11 -0
- data/lib/skala/record/link.rb +9 -0
- data/lib/skala/record/relation.rb +9 -0
- data/lib/skala/transaction.rb +13 -0
- data/lib/skala/version.rb +1 -1
- data/skala.gemspec +21 -12
- data/spec/skala/search_request/ordered_terms_query_spec.rb +6 -0
- data/spec/spec_helper.rb +7 -28
- metadata +237 -85
- data/lib/skala/i18n.rb +0 -46
- data/lib/skala/transformation.rb +0 -54
- data/lib/skala/transformation/step.rb +0 -24
- data/spec/assets/locales/de.yml +0 -14
- data/spec/assets/locales/en.yml +0 -9
- data/spec/assets/transformation/some_class.rb +0 -2
- data/spec/skala/adapter/operation_spec.rb +0 -19
- data/spec/skala/adapter_spec.rb +0 -2
- data/spec/skala/i18n_spec.rb +0 -95
- data/spec/skala/transformation/step_spec.rb +0 -36
- data/spec/skala/transformation_spec.rb +0 -89
- data/spec/skala_spec.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b49a392c417efbb429dc81c5191f1681f69d7c4
|
4
|
+
data.tar.gz: 0915bf5e0d80f0815415ce6051e1e38689736943
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e8696bd6f15999acd5c28a91229ffc252b4e93e998b2cba058e402eafdab6a3b3ca642efe307555d9e677e3ba0591c2cfbd3fcfc68e0fa8936bdf01d9f1894d
|
7
|
+
data.tar.gz: b8cc76becfede01661bdcccaee8bbf3a40ed89be96e6e58946b38d51e8d58b5f14f1aaecca482f630b9d54ae27751acec5e09564840f951578b84bfc0a6d59e7
|
data/.gitignore
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
.DS_Store
|
1
2
|
*.gem
|
2
3
|
*.rbc
|
3
4
|
.bundle
|
@@ -7,16 +8,15 @@ Gemfile.lock
|
|
7
8
|
InstalledFiles
|
8
9
|
_yardoc
|
9
10
|
coverage
|
10
|
-
doc
|
11
|
-
lib/bundler/man
|
11
|
+
doc
|
12
12
|
pkg
|
13
13
|
rdoc
|
14
14
|
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
15
|
tmp
|
16
|
+
log
|
18
17
|
*.bundle
|
19
18
|
*.so
|
20
19
|
*.o
|
21
20
|
*.a
|
22
21
|
mkmf.log
|
22
|
+
*.sqlite3
|
data/Gemfile
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
# Specify your gem's dependencies in skala.gemspec
|
4
3
|
gemspec
|
5
4
|
|
5
|
+
group :development, :test do
|
6
|
+
gem "bundler", ">= 1.9"
|
7
|
+
gem "rake", ">= 10.0"
|
8
|
+
gem "rspec", ">= 3.0.0", "< 4.0.0"
|
9
|
+
gem "simplecov", ">= 0.8.0"
|
10
|
+
gem "sqlite3", ">= 1.3"
|
11
|
+
gem "vcr", ">= 2.9.0", "< 3.0.0"
|
12
|
+
gem "webmock", ">= 1.19.0", "< 2.0.0"
|
13
|
+
end
|
14
|
+
|
6
15
|
if !ENV["CI"]
|
7
16
|
group :development do
|
8
17
|
gem "pry", "~> 0.9.12.6"
|
data/LICENSE.txt
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
-
|
1
|
+
The MIT License (MIT)
|
2
2
|
|
3
|
-
|
3
|
+
Copyright (c) 2015 University of Paderborn
|
4
4
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
the following conditions:
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
12
11
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
15
14
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
OF
|
22
|
-
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,34 +1 @@
|
|
1
|
-
|
2
|
-
[![Build Status](https://travis-ci.org/ubpb/skala.svg?branch=master)](https://travis-ci.org/ubpb/skala)
|
3
|
-
[![Test Coverage](https://codeclimate.com/github/ubpb/skala/badges/coverage.svg)](https://codeclimate.com/github/ubpb/skala)
|
4
|
-
[![Code Climate](https://codeclimate.com/github/ubpb/skala/badges/gpa.svg)](https://codeclimate.com/github/ubpb/skala)
|
5
|
-
|
6
|
-
Skala was created as a base for common adapter specific code and functionality. It was extract from ```celsius``` and ```fahrenheit``` to avoid code duplication and unnecessary inter-gem-linkage.
|
7
|
-
|
8
|
-
## Installation
|
9
|
-
|
10
|
-
Add this line to your application's Gemfile:
|
11
|
-
|
12
|
-
```ruby
|
13
|
-
gem 'skala'
|
14
|
-
```
|
15
|
-
|
16
|
-
And then execute:
|
17
|
-
|
18
|
-
$ bundle
|
19
|
-
|
20
|
-
Or install it yourself as:
|
21
|
-
|
22
|
-
$ gem install skala
|
23
|
-
|
24
|
-
## Usage
|
25
|
-
|
26
|
-
TODO: Write usage instructions here
|
27
|
-
|
28
|
-
## Contributing
|
29
|
-
|
30
|
-
1. Fork it ( https://github.com/ubpb/skala/fork )
|
31
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
32
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
33
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
34
|
-
5. Create a new Pull Request
|
1
|
+
TBD.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
## Primo Central
|
2
|
+
|
3
|
+
### Known Facets
|
4
|
+
|
5
|
+
* creator
|
6
|
+
* lcc
|
7
|
+
* Library of Congress Classification (https://www.loc.gov/catdir/cpso/lcco)
|
8
|
+
* lang
|
9
|
+
* ISO 639-2/B language codes
|
10
|
+
* rtype
|
11
|
+
* books
|
12
|
+
* reviews
|
13
|
+
* articles
|
14
|
+
* journals
|
15
|
+
* other
|
16
|
+
* text_resources
|
17
|
+
* websites
|
18
|
+
* newspaper_articles
|
19
|
+
* reference_entrys
|
20
|
+
* technical_reports
|
21
|
+
* research_datasets
|
22
|
+
* databases
|
23
|
+
* Dissertations
|
24
|
+
* images
|
25
|
+
* conference_proceedings
|
26
|
+
* media
|
27
|
+
* topic
|
28
|
+
* tlevel
|
29
|
+
* online_resources
|
30
|
+
* peer_reviewed
|
31
|
+
* pfilter
|
32
|
+
* same types as rtype
|
33
|
+
* creationdate
|
34
|
+
* four digit strings like "2008"
|
35
|
+
* domain
|
36
|
+
* something like publisher, but with a more wide meaning
|
37
|
+
* examples
|
38
|
+
* Literature Resource Center (Gale)
|
39
|
+
* ITPro (Books24x7)
|
40
|
+
* SpringerLink
|
41
|
+
* jtitle
|
42
|
+
* the journal title
|
data/bin/console
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "skala"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
data/config/skala.yml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
common_settings: &common_settings
|
2
|
+
#
|
3
|
+
# Example config
|
4
|
+
#
|
5
|
+
|
6
|
+
# ils_adapter:
|
7
|
+
# class_name: "Skala::AlephAdapter"
|
8
|
+
# options:
|
9
|
+
# default_document_base: "PAD01"
|
10
|
+
# default_user_library: "PAD50"
|
11
|
+
# restful_api_url: "http://ubtest.uni-paderborn.de:1891/rest-dlf"
|
12
|
+
# x_services_url: "https://ubtest.uni-paderborn.de/X"
|
13
|
+
# #source_id: "PAD_ALEPH"
|
14
|
+
|
15
|
+
# search_scopes:
|
16
|
+
# local:
|
17
|
+
# search_engine_adapter:
|
18
|
+
# class_name: "Skala::ElasticsearchAdapter"
|
19
|
+
# options:
|
20
|
+
# hosts:
|
21
|
+
# - host: "ubstage1.uni-paderborn.de"
|
22
|
+
# facets_via_aggregations: true
|
23
|
+
# index: catalog
|
24
|
+
# defaults:
|
25
|
+
# facets:
|
26
|
+
# __aggregatable.creator:
|
27
|
+
# terms:
|
28
|
+
# field: "__aggregatable.creator"
|
29
|
+
# shard_size: 75
|
30
|
+
|
31
|
+
# __aggregatable.subject:
|
32
|
+
# terms:
|
33
|
+
# field: "__aggregatable.subject"
|
34
|
+
# shard_size: 75
|
35
|
+
|
36
|
+
# __aggregatable.classification:
|
37
|
+
# terms:
|
38
|
+
# field: "__aggregatable.classification"
|
39
|
+
# shard_size: 75
|
40
|
+
|
41
|
+
# search_request:
|
42
|
+
# from: 0
|
43
|
+
# size: 20
|
44
|
+
# sort:
|
45
|
+
# - _score
|
46
|
+
|
47
|
+
# searchable_fields:
|
48
|
+
# - _all
|
49
|
+
# - "__searchable.creator"
|
50
|
+
# - "__searchable.title"
|
51
|
+
# - "__searchable.subject"
|
52
|
+
# - "__searchable.identifier"
|
53
|
+
|
54
|
+
# sortable_fields:
|
55
|
+
# - _score
|
56
|
+
|
57
|
+
development: &development
|
58
|
+
<<: *common_settings
|
59
|
+
|
60
|
+
test:
|
61
|
+
<<: *development
|
62
|
+
|
63
|
+
production:
|
64
|
+
<<: *common_settings
|
65
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateSkalaUsers < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :skala_users do |t|
|
4
|
+
t.string :api_key
|
5
|
+
t.string :username
|
6
|
+
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
|
10
|
+
add_index :skala_users, :api_key, unique: true
|
11
|
+
add_index :skala_users, :username, unique: true
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateSkalaUserWatchLists < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :skala_user_watch_lists do |t|
|
4
|
+
t.text :description
|
5
|
+
t.string :name
|
6
|
+
t.boolean :public, default: false
|
7
|
+
t.references :user
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :skala_user_watch_lists, :user_id
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateSkalaUserWatchListEntries < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :skala_user_watch_list_entries do |t|
|
4
|
+
t.string :record_id
|
5
|
+
t.string :scope_id
|
6
|
+
t.references :watch_list
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
|
11
|
+
add_index :skala_user_watch_list_entries, :watch_list_id
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateSkalaUserNotes < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :skala_user_notes do |t|
|
4
|
+
t.references :user
|
5
|
+
|
6
|
+
t.string :record_id
|
7
|
+
t.string :scope_id
|
8
|
+
t.text :value, limit: 1073741823
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :skala_user_notes, :record_id
|
14
|
+
add_index :skala_user_notes, :user_id
|
15
|
+
end
|
16
|
+
end
|
data/lib/skala.rb
CHANGED
@@ -1,7 +1,40 @@
|
|
1
|
-
require "
|
1
|
+
require "active_support"
|
2
|
+
require "active_support/core_ext"
|
3
|
+
require "virtus"
|
4
|
+
|
5
|
+
if ::Object.const_defined?("Rails")
|
6
|
+
require_relative "skala/engine"
|
7
|
+
end
|
2
8
|
|
3
9
|
module Skala
|
10
|
+
# virtus objects do not deep_dup correctly, so the have to include this
|
11
|
+
module DeepDupable
|
12
|
+
def deep_dup
|
13
|
+
Marshal.load(Marshal.dump(self))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
4
17
|
require_relative "skala/adapter"
|
5
|
-
require_relative "skala/
|
6
|
-
require_relative "skala/
|
18
|
+
require_relative "skala/aleph_adapter"
|
19
|
+
require_relative "skala/elasticsearch_adapter"
|
20
|
+
require_relative "skala/primo_adapter"
|
21
|
+
|
22
|
+
require_relative "skala/hold_request"
|
23
|
+
require_relative "skala/item"
|
24
|
+
require_relative "skala/loan"
|
25
|
+
require_relative "skala/record"
|
26
|
+
require_relative "skala/transaction"
|
27
|
+
end
|
28
|
+
|
29
|
+
# patch Virtus to not serialize unset lazy attributes
|
30
|
+
class Virtus::AttributeSet
|
31
|
+
def get(object)
|
32
|
+
each_with_object({}) do |attribute, attributes|
|
33
|
+
name = attribute.name
|
34
|
+
|
35
|
+
if attribute.public_reader? && (!attribute.lazy? || attribute.defined?(object))
|
36
|
+
attributes[name] = object.__send__(name)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
7
40
|
end
|
data/lib/skala/adapter.rb
CHANGED
@@ -1,8 +1,126 @@
|
|
1
|
-
require_relative "./i18n"
|
2
1
|
require_relative "../skala"
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
module Skala
|
4
|
+
class Adapter
|
5
|
+
require_relative "adapter/operation"
|
6
6
|
|
7
|
-
|
7
|
+
#
|
8
|
+
# errors (must come before includes for operation to be able to derive own errors)
|
9
|
+
#
|
10
|
+
class Error < StandardError; end
|
11
|
+
class BadRequestError < Error; end
|
12
|
+
class RequestFailedError < Error; end
|
13
|
+
|
14
|
+
# operations
|
15
|
+
require_relative "./adapter/authenticate_user"
|
16
|
+
require_relative "./adapter/create_user_hold_request"
|
17
|
+
require_relative "./adapter/delete_user_hold_request"
|
18
|
+
require_relative "./adapter/get_record_holdable_items"
|
19
|
+
require_relative "./adapter/get_record_items"
|
20
|
+
require_relative "./adapter/get_records"
|
21
|
+
require_relative "./adapter/get_user"
|
22
|
+
require_relative "./adapter/get_user_former_loans"
|
23
|
+
require_relative "./adapter/get_user_hold_requests"
|
24
|
+
require_relative "./adapter/get_user_inter_library_loans"
|
25
|
+
require_relative "./adapter/get_user_loans"
|
26
|
+
require_relative "./adapter/get_user_transactions"
|
27
|
+
require_relative "./adapter/renew_user_loan"
|
28
|
+
require_relative "./adapter/renew_user_loans"
|
29
|
+
require_relative "./adapter/search"
|
30
|
+
require_relative "./adapter/update_user"
|
31
|
+
|
32
|
+
# TODO: all others are 'typed', e.g. get_user, get_record_items ... should this be typed, too ?
|
33
|
+
def search(request, *args)
|
34
|
+
request = request.is_a?(Search::Request) ? request : Search::Request.new(request)
|
35
|
+
self.class::Search.new(self).call(request, *args)
|
36
|
+
end
|
37
|
+
|
38
|
+
#
|
39
|
+
# records
|
40
|
+
#
|
41
|
+
def get_records(*args)
|
42
|
+
self.class::GetRecords.new(self).call(*args)
|
43
|
+
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# record item(s)
|
47
|
+
#
|
48
|
+
def get_record_items(*args)
|
49
|
+
self.class::GetRecordItems.new(self).call(*args)
|
50
|
+
end
|
51
|
+
|
52
|
+
def get_record_holdable_items(*args)
|
53
|
+
self.class::GetRecordHoldableItems.new(self).call(*args)
|
54
|
+
end
|
55
|
+
|
56
|
+
#
|
57
|
+
# user(s)
|
58
|
+
#
|
59
|
+
def authenticate_user(*args)
|
60
|
+
self.class::AuthenticateUser.new(self).call(*args)
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_user(*args)
|
64
|
+
self.class::GetUser.new(self).call(*args)
|
65
|
+
end
|
66
|
+
|
67
|
+
def update_user(*args)
|
68
|
+
self.class::UpdateUser.new(self).call(*args)
|
69
|
+
end
|
70
|
+
|
71
|
+
#
|
72
|
+
# user cash
|
73
|
+
#
|
74
|
+
def get_user_cash(*args)
|
75
|
+
self.class::GetUserCash.new(self).call(*args)
|
76
|
+
end
|
77
|
+
|
78
|
+
#
|
79
|
+
# user hold request(s)
|
80
|
+
#
|
81
|
+
def create_user_hold_request(*args)
|
82
|
+
self.class::CreateUserHoldRequest.new(self).call(*args)
|
83
|
+
end
|
84
|
+
|
85
|
+
def delete_user_hold_request(*args)
|
86
|
+
self.class::DeleteUserHoldRequest.new(self).call(*args)
|
87
|
+
end
|
88
|
+
|
89
|
+
def get_user_hold_requests(*args)
|
90
|
+
self.class::GetUserHoldRequests.new(self).call(*args)
|
91
|
+
end
|
92
|
+
|
93
|
+
#
|
94
|
+
# user inter library loans
|
95
|
+
#
|
96
|
+
def get_user_inter_library_loans(*args)
|
97
|
+
self.class::GetUserInterLibraryLoans.new(self).call(*args)
|
98
|
+
end
|
99
|
+
|
100
|
+
#
|
101
|
+
# user loan(s)
|
102
|
+
#
|
103
|
+
def get_user_former_loans(*args)
|
104
|
+
self.class::GetUserFormerLoans.new(self).call(*args)
|
105
|
+
end
|
106
|
+
|
107
|
+
def get_user_loans(*args)
|
108
|
+
self.class::GetUserLoans.new(self).call(*args)
|
109
|
+
end
|
110
|
+
|
111
|
+
def renew_user_loan(*args)
|
112
|
+
self.class::RenewUserLoan.new(self).call(*args)
|
113
|
+
end
|
114
|
+
|
115
|
+
def renew_user_loans(*args)
|
116
|
+
self.class::RenewUserLoans.new(self).call(*args)
|
117
|
+
end
|
118
|
+
|
119
|
+
#
|
120
|
+
# user transactions
|
121
|
+
#
|
122
|
+
def get_user_transactions(*args)
|
123
|
+
self.class::GetUserTransactions.new(self).call(*args)
|
124
|
+
end
|
125
|
+
end
|
8
126
|
end
|