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.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -4
  3. data/Gemfile +10 -1
  4. data/LICENSE.txt +17 -18
  5. data/README.md +1 -34
  6. data/README.primo_adapter.md +42 -0
  7. data/bin/console +11 -0
  8. data/config/initializers/skala.rb +5 -0
  9. data/config/skala.yml +65 -0
  10. data/db/migrate/20141006133522_create_skala_users.rb +13 -0
  11. data/db/migrate/20141006133649_create_skala_user_watch_lists.rb +14 -0
  12. data/db/migrate/20141006135644_create_skala_user_watch_list_entries.rb +13 -0
  13. data/db/migrate/20141006140435_create_skala_user_notes.rb +16 -0
  14. data/lib/skala.rb +36 -3
  15. data/lib/skala/adapter.rb +122 -4
  16. data/lib/skala/adapter/authenticate_user.rb +4 -0
  17. data/lib/skala/adapter/create_user_hold_request.rb +7 -0
  18. data/lib/skala/adapter/create_user_hold_request/result.rb +10 -0
  19. data/lib/skala/adapter/delete_user_hold_request.rb +7 -0
  20. data/lib/skala/adapter/get_record_holdable_items.rb +5 -0
  21. data/lib/skala/adapter/get_record_holdable_items/result.rb +14 -0
  22. data/lib/skala/adapter/get_record_items.rb +5 -0
  23. data/lib/skala/adapter/get_record_items/result.rb +14 -0
  24. data/lib/skala/adapter/get_records.rb +5 -0
  25. data/lib/skala/adapter/get_records/result.rb +28 -0
  26. data/lib/skala/adapter/get_user.rb +4 -0
  27. data/lib/skala/adapter/get_user_former_loans.rb +5 -0
  28. data/lib/skala/adapter/get_user_former_loans/result.rb +14 -0
  29. data/lib/skala/adapter/get_user_hold_requests.rb +5 -0
  30. data/lib/skala/adapter/get_user_hold_requests/result.rb +14 -0
  31. data/lib/skala/adapter/get_user_inter_library_loans.rb +5 -0
  32. data/lib/skala/adapter/get_user_inter_library_loans/result.rb +14 -0
  33. data/lib/skala/adapter/get_user_loans.rb +5 -0
  34. data/lib/skala/adapter/get_user_loans/result.rb +14 -0
  35. data/lib/skala/adapter/get_user_transactions.rb +5 -0
  36. data/lib/skala/adapter/get_user_transactions/result.rb +14 -0
  37. data/lib/skala/adapter/operation.rb +2 -0
  38. data/lib/skala/adapter/operation/request.rb +6 -0
  39. data/lib/skala/adapter/operation/result.rb +7 -0
  40. data/lib/skala/adapter/renew_user_loan.rb +7 -0
  41. data/lib/skala/adapter/renew_user_loan/result.rb +7 -0
  42. data/lib/skala/adapter/renew_user_loans.rb +5 -0
  43. data/lib/skala/adapter/renew_user_loans/result.rb +9 -0
  44. data/lib/skala/adapter/search.rb +6 -0
  45. data/lib/skala/adapter/search/request.rb +91 -0
  46. data/lib/skala/adapter/search/request/date_histogram_facet.rb +5 -0
  47. data/lib/skala/adapter/search/request/facet.rb +29 -0
  48. data/lib/skala/adapter/search/request/histogram_facet.rb +8 -0
  49. data/lib/skala/adapter/search/request/ids_query.rb +6 -0
  50. data/lib/skala/adapter/search/request/match_query.rb +7 -0
  51. data/lib/skala/adapter/search/request/ordered_terms_query.rb +7 -0
  52. data/lib/skala/adapter/search/request/query.rb +18 -0
  53. data/lib/skala/adapter/search/request/query_string_query.rb +9 -0
  54. data/lib/skala/adapter/search/request/range_facet.rb +10 -0
  55. data/lib/skala/adapter/search/request/range_facet/range.rb +9 -0
  56. data/lib/skala/adapter/search/request/range_query.rb +8 -0
  57. data/lib/skala/adapter/search/request/simple_query_string_query.rb +8 -0
  58. data/lib/skala/adapter/search/request/sort_request.rb +15 -0
  59. data/lib/skala/adapter/search/request/terms_facet.rb +8 -0
  60. data/lib/skala/adapter/search/request/unscored_terms_query.rb +7 -0
  61. data/lib/skala/adapter/search/result.rb +22 -0
  62. data/lib/skala/adapter/search/result/facet.rb +15 -0
  63. data/lib/skala/adapter/search/result/histogram_facet.rb +12 -0
  64. data/lib/skala/adapter/search/result/histogram_facet/entry.rb +8 -0
  65. data/lib/skala/adapter/search/result/hit.rb +13 -0
  66. data/lib/skala/adapter/search/result/terms_facet.rb +14 -0
  67. data/lib/skala/adapter/search/result/terms_facet/term.rb +8 -0
  68. data/lib/skala/adapter/update_user.rb +4 -0
  69. data/lib/skala/aleph_adapter.rb +47 -0
  70. data/lib/skala/aleph_adapter/authenticate_user.rb +27 -0
  71. data/lib/skala/aleph_adapter/create_user_hold_request.rb +63 -0
  72. data/lib/skala/aleph_adapter/delete_user_hold_request.rb +29 -0
  73. data/lib/skala/aleph_adapter/get_record.rb +22 -0
  74. data/lib/skala/aleph_adapter/get_record_holdable_items.rb +29 -0
  75. data/lib/skala/aleph_adapter/get_record_items.rb +111 -0
  76. data/lib/skala/aleph_adapter/get_user.rb +49 -0
  77. data/lib/skala/aleph_adapter/get_user_former_loans.rb +21 -0
  78. data/lib/skala/aleph_adapter/get_user_hold_requests.rb +102 -0
  79. data/lib/skala/aleph_adapter/get_user_inter_library_loans.rb +66 -0
  80. data/lib/skala/aleph_adapter/get_user_loans.rb +93 -0
  81. data/lib/skala/aleph_adapter/get_user_transactions.rb +96 -0
  82. data/lib/skala/aleph_adapter/renew_user_loan.rb +27 -0
  83. data/lib/skala/aleph_adapter/renew_user_loans.rb +39 -0
  84. data/lib/skala/aleph_adapter/resolve_user.rb +19 -0
  85. data/lib/skala/aleph_adapter/update_user.rb +105 -0
  86. data/lib/skala/common_attributes.rb +19 -0
  87. data/lib/skala/elasticsearch_adapter.rb +33 -0
  88. data/lib/skala/elasticsearch_adapter/search.rb +20 -0
  89. data/lib/skala/elasticsearch_adapter/search/request_transformation.rb +20 -0
  90. data/lib/skala/elasticsearch_adapter/search/request_transformation/add_aggregations.rb +50 -0
  91. data/lib/skala/elasticsearch_adapter/search/request_transformation/add_from.rb +10 -0
  92. data/lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb +107 -0
  93. data/lib/skala/elasticsearch_adapter/search/request_transformation/add_size.rb +12 -0
  94. data/lib/skala/elasticsearch_adapter/search/request_transformation/add_sort.rb +18 -0
  95. data/lib/skala/elasticsearch_adapter/search/request_transformation/add_version.rb +10 -0
  96. data/lib/skala/elasticsearch_adapter/search/result_transformation.rb +21 -0
  97. data/lib/skala/elasticsearch_adapter/search/result_transformation/set_facets.rb +44 -0
  98. data/lib/skala/elasticsearch_adapter/search/result_transformation/set_hits.rb +18 -0
  99. data/lib/skala/elasticsearch_adapter/search/result_transformation/set_total_hits.rb +10 -0
  100. data/lib/skala/engine.rb +14 -0
  101. data/lib/skala/get_user_result.rb +14 -0
  102. data/lib/skala/hold_request.rb +24 -0
  103. data/lib/skala/item.rb +15 -0
  104. data/lib/skala/loan.rb +18 -0
  105. data/lib/skala/primo_adapter.rb +34 -0
  106. data/lib/skala/primo_adapter/get_records.rb +24 -0
  107. data/lib/skala/primo_adapter/search.rb +13 -0
  108. data/lib/skala/primo_adapter/search/request_transformation.rb +40 -0
  109. data/lib/skala/primo_adapter/search/request_transformation/add_queries.rb +97 -0
  110. data/lib/skala/primo_adapter/search/request_transformation/add_sort_by_list.rb +37 -0
  111. data/lib/skala/primo_adapter/search/request_transformation/embed_inner_search_request.rb +13 -0
  112. data/lib/skala/primo_adapter/search/request_transformation/serialize_target_as_xml.rb +11 -0
  113. data/lib/skala/primo_adapter/search/request_transformation/set_bulk_size.rb +12 -0
  114. data/lib/skala/primo_adapter/search/request_transformation/set_institution.rb +12 -0
  115. data/lib/skala/primo_adapter/search/request_transformation/set_languages.rb +15 -0
  116. data/lib/skala/primo_adapter/search/request_transformation/set_locations.rb +19 -0
  117. data/lib/skala/primo_adapter/search/request_transformation/set_on_campus.rb +13 -0
  118. data/lib/skala/primo_adapter/search/request_transformation/set_start_index.rb +12 -0
  119. data/lib/skala/primo_adapter/search/request_transformation/setup_inner_search_request.rb +33 -0
  120. data/lib/skala/primo_adapter/search/request_transformation/setup_target.rb +28 -0
  121. data/lib/skala/primo_adapter/search/request_transformation/toggle_bool_operator.rb +13 -0
  122. data/lib/skala/primo_adapter/search/result_transformation.rb +30 -0
  123. data/lib/skala/primo_adapter/search/result_transformation/add_hits.rb +13 -0
  124. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation.rb +46 -0
  125. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_creator.rb +10 -0
  126. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_description.rb +10 -0
  127. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_edition.rb +10 -0
  128. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_fulltext_available.rb +12 -0
  129. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_id.rb +11 -0
  130. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb +46 -0
  131. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_is_part_of.rb +14 -0
  132. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_language.rb +10 -0
  133. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_metadata.rb +13 -0
  134. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_openurl.rb +23 -0
  135. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_publisher.rb +10 -0
  136. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_source.rb +10 -0
  137. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_subject.rb +10 -0
  138. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_title.rb +10 -0
  139. data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_year_of_publication.rb +10 -0
  140. data/lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb +108 -0
  141. data/lib/skala/primo_adapter/search/result_transformation/parse_search_brief_response.rb +20 -0
  142. data/lib/skala/primo_adapter/search/result_transformation/set_facets.rb +71 -0
  143. data/lib/skala/primo_adapter/search/result_transformation/set_total_hits.rb +13 -0
  144. data/lib/skala/primo_adapter/search/result_transformation/sort_terms_facets_terms.rb +14 -0
  145. data/lib/skala/primo_adapter/soap_api.rb +15 -0
  146. data/lib/skala/primo_adapter/soap_api/search_brief.rb +25 -0
  147. data/lib/skala/record.rb +85 -0
  148. data/lib/skala/record/identifier.rb +9 -0
  149. data/lib/skala/record/is_part_of.rb +11 -0
  150. data/lib/skala/record/link.rb +9 -0
  151. data/lib/skala/record/relation.rb +9 -0
  152. data/lib/skala/transaction.rb +13 -0
  153. data/lib/skala/version.rb +1 -1
  154. data/skala.gemspec +21 -12
  155. data/spec/skala/search_request/ordered_terms_query_spec.rb +6 -0
  156. data/spec/spec_helper.rb +7 -28
  157. metadata +237 -85
  158. data/lib/skala/i18n.rb +0 -46
  159. data/lib/skala/transformation.rb +0 -54
  160. data/lib/skala/transformation/step.rb +0 -24
  161. data/spec/assets/locales/de.yml +0 -14
  162. data/spec/assets/locales/en.yml +0 -9
  163. data/spec/assets/transformation/some_class.rb +0 -2
  164. data/spec/skala/adapter/operation_spec.rb +0 -19
  165. data/spec/skala/adapter_spec.rb +0 -2
  166. data/spec/skala/i18n_spec.rb +0 -95
  167. data/spec/skala/transformation/step_spec.rb +0 -36
  168. data/spec/skala/transformation_spec.rb +0 -89
  169. data/spec/skala_spec.rb +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aae9b8b40ca397d60ff19d4b4e18388bff0c0394
4
- data.tar.gz: b560ab30285fab610ba6b04de36c21f94070983f
3
+ metadata.gz: 2b49a392c417efbb429dc81c5191f1681f69d7c4
4
+ data.tar.gz: 0915bf5e0d80f0815415ce6051e1e38689736943
5
5
  SHA512:
6
- metadata.gz: 66c797c3536ab3e72c8be2c57d2eb59585df9757387663c0d48a454f770297d111a8a440728fb2d7f625eb14666899713f52b1740bfeae8e55cbae433854fc99
7
- data.tar.gz: 5fe5fd9cfdea4785ed5b1ef1866a7813dbeb80385eab89bec1ecd82734f3370e6a17e3d8c876a70b23d94f8eeecae1b672a4f7eeba31f6df4a301fa7cb18e978
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"
@@ -1,22 +1,21 @@
1
- Copyright (c) 2015 Michael Sievers
1
+ The MIT License (MIT)
2
2
 
3
- MIT License
3
+ Copyright (c) 2015 University of Paderborn
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
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
- included in all copies or substantial portions of the Software.
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
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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
- # Skala
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
@@ -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
@@ -0,0 +1,5 @@
1
+ module Skala
2
+ def self.config
3
+ @config ||= Skala::Config.new(Rails.application.config_for(:skala))
4
+ end
5
+ end
@@ -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
@@ -1,7 +1,40 @@
1
- require "skala/version"
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/i18n"
6
- require_relative "skala/transformation"
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
@@ -1,8 +1,126 @@
1
- require_relative "./i18n"
2
1
  require_relative "../skala"
3
2
 
4
- class Skala::Adapter
5
- require_relative "./adapter/operation"
3
+ module Skala
4
+ class Adapter
5
+ require_relative "adapter/operation"
6
6
 
7
- include Skala::I18n
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