skala 0.3.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
[](https://travis-ci.org/ubpb/skala)
|
|
3
|
-
[](https://codeclimate.com/github/ubpb/skala)
|
|
4
|
-
[](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
|