skala 0.3.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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