hyrax 5.0.1 → 5.0.3

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 (247) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +7 -176
  3. data/.dassie/.env +8 -3
  4. data/.dassie/Gemfile +13 -2
  5. data/.dassie/app/controllers/hyrax/generic_work_resources_controller.rb +17 -0
  6. data/.dassie/app/controllers/hyrax/generic_works_controller.rb +7 -1
  7. data/.dassie/app/forms/generic_work_resource_form.rb +20 -0
  8. data/.dassie/app/indexers/generic_work_resource_indexer.rb +16 -0
  9. data/.dassie/app/models/admin_set_resource.rb +9 -0
  10. data/.dassie/app/models/collection_resource.rb +2 -0
  11. data/.dassie/app/models/file_set.rb +2 -0
  12. data/.dassie/app/models/generic_work_resource.rb +10 -0
  13. data/.dassie/app/views/hyrax/generic_work_resources/_generic_work_resource.html.erb +2 -0
  14. data/.dassie/config/analytics.yml +6 -1
  15. data/.dassie/config/application.rb +24 -0
  16. data/.dassie/config/initializers/hyrax.rb +13 -3
  17. data/.dassie/config/initializers/wings.rb +109 -0
  18. data/.dassie/config/metadata/generic_work_resource.yaml +22 -0
  19. data/.dassie/config/valkyrie_index.yml +4 -10
  20. data/.dassie/db/migrate/20240506070809_valkyrie_id_to_string.rb +5 -0
  21. data/.dassie/db/schema.rb +2 -2
  22. data/.dassie/spec/indexers/generic_work_resource_indexer_spec.rb +13 -0
  23. data/.dassie/spec/models/generic_work_resource_spec.rb +12 -0
  24. data/.dassie/spec/views/generic_work_resources/_generic_work_resource.html.erb_spec.rb +7 -0
  25. data/.dockerignore +6 -4
  26. data/.github/release.yml +3 -0
  27. data/.github/workflows/lint-build-test.yml +130 -0
  28. data/.github/workflows/test-results.yml +40 -0
  29. data/.koppie/.env +7 -5
  30. data/.koppie/Gemfile +12 -1
  31. data/.koppie/config/analytics.yml +6 -1
  32. data/.koppie/config/environments/test.rb +2 -0
  33. data/.koppie/config/initializers/1_valkyrie.rb +6 -2
  34. data/.koppie/config/solr.yml +1 -1
  35. data/.regen +1 -1
  36. data/.rubocop.yml +5 -0
  37. data/Dockerfile +16 -36
  38. data/Gemfile +2 -0
  39. data/app/assets/javascripts/hydra-editor/field_manager.es6 +187 -0
  40. data/app/assets/javascripts/hyrax/analytics_events.js +48 -24
  41. data/app/assets/javascripts/hyrax/collapse.js +4 -4
  42. data/app/assets/javascripts/hyrax/file_manager/save_manager.es6 +2 -0
  43. data/app/assets/javascripts/hyrax/search.js +2 -3
  44. data/app/assets/javascripts/hyrax/select_work_type.es6 +3 -1
  45. data/app/assets/javascripts/hyrax/uploader.js +20 -18
  46. data/app/assets/javascripts/hyrax.js +1 -0
  47. data/app/assets/stylesheets/_bootstrap-default-overrides.scss +4 -0
  48. data/app/assets/stylesheets/hyrax/_card.scss +4 -0
  49. data/app/assets/stylesheets/hyrax/_catalog.scss +21 -0
  50. data/app/assets/stylesheets/hyrax/_collections.scss +1 -1
  51. data/app/assets/stylesheets/hyrax/_facets.scss +15 -3
  52. data/app/assets/stylesheets/hyrax/_featured.scss +4 -0
  53. data/app/assets/stylesheets/hyrax/_form.scss +4 -0
  54. data/app/assets/stylesheets/hyrax/_forms.scss +2 -1
  55. data/app/assets/stylesheets/hyrax/_nestable.scss +9 -8
  56. data/app/assets/stylesheets/hyrax/_select_work_type.scss +12 -0
  57. data/app/assets/stylesheets/hyrax/_styles.scss +4 -0
  58. data/app/assets/stylesheets/hyrax/_work-show.scss +3 -0
  59. data/app/controllers/concerns/hyrax/singular_subresource_controller.rb +7 -2
  60. data/app/controllers/concerns/hyrax/valkyrie_downloads_controller_behavior.rb +11 -2
  61. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +9 -2
  62. data/app/controllers/hyrax/admin/analytics/collection_reports_controller.rb +2 -2
  63. data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +7 -8
  64. data/app/controllers/hyrax/dashboard/collections_controller.rb +2 -1
  65. data/app/controllers/hyrax/downloads_controller.rb +24 -3
  66. data/app/controllers/hyrax/file_sets_controller.rb +32 -6
  67. data/app/controllers/hyrax/my/works_controller.rb +20 -0
  68. data/app/controllers/hyrax/stats_controller.rb +1 -1
  69. data/app/controllers/hyrax/uploads_controller.rb +28 -2
  70. data/app/forms/hyrax/forms/admin/appearance.rb +1 -1
  71. data/app/forms/hyrax/forms/admin/collection_type_form.rb +1 -7
  72. data/app/forms/hyrax/forms/pcdm_collection_form.rb +9 -0
  73. data/app/forms/hyrax/forms/work_embargo_form.rb +6 -0
  74. data/app/forms/hyrax/forms/work_lease_form.rb +6 -0
  75. data/app/indexers/concerns/hyrax/location_indexer.rb +2 -2
  76. data/app/indexers/hyrax/indexers/file_set_indexer.rb +4 -0
  77. data/app/indexers/hyrax/indexers/resource_indexer.rb +1 -0
  78. data/app/indexers/hyrax/valkyrie_indexer.rb +3 -5
  79. data/app/jobs/migrate_files_to_valkyrie_job.rb +109 -0
  80. data/app/jobs/migrate_resources_job.rb +34 -0
  81. data/app/jobs/valkyrie_create_derivatives_job.rb +2 -1
  82. data/app/models/admin_set.rb +1 -0
  83. data/app/models/concerns/hyrax/ar_resource.rb +104 -0
  84. data/app/models/concerns/hyrax/solr_document/ordered_members.rb +2 -1
  85. data/app/models/concerns/hyrax/solr_document_behavior.rb +13 -2
  86. data/app/models/concerns/hyrax/valkyrie_lazy_migration.rb +82 -0
  87. data/app/models/file_download_stat.rb +1 -1
  88. data/app/models/file_view_stat.rb +1 -1
  89. data/app/models/hyrax/collection_type.rb +12 -4
  90. data/app/models/hyrax/file_metadata.rb +19 -0
  91. data/app/models/hyrax/file_set.rb +25 -0
  92. data/app/models/hyrax/model_registry.rb +2 -3
  93. data/app/models/hyrax/resource.rb +5 -0
  94. data/app/models/hyrax/statistic.rb +12 -37
  95. data/app/presenters/hyrax/file_set_presenter.rb +2 -1
  96. data/app/presenters/hyrax/file_usage.rb +3 -3
  97. data/app/presenters/hyrax/iiif_manifest_presenter.rb +2 -1
  98. data/app/presenters/hyrax/member_presenter_factory.rb +7 -1
  99. data/app/presenters/hyrax/menu_presenter.rb +1 -1
  100. data/app/presenters/hyrax/stats_usage_presenter.rb +2 -1
  101. data/app/presenters/hyrax/work_show_presenter.rb +13 -17
  102. data/app/presenters/hyrax/work_usage.rb +5 -2
  103. data/app/search_builders/hyrax/expired_embargo_search_builder.rb +7 -1
  104. data/app/search_builders/hyrax/expired_lease_search_builder.rb +7 -1
  105. data/app/search_builders/hyrax/filter_by_type.rb +1 -3
  106. data/app/search_builders/hyrax/valkyrie_abstract_type_relation.rb +7 -2
  107. data/app/services/hyrax/access_control_list.rb +1 -1
  108. data/app/services/hyrax/admin_set_create_service.rb +16 -5
  109. data/app/services/hyrax/admin_set_service.rb +2 -1
  110. data/app/services/hyrax/analytics/ga4/base.rb +96 -0
  111. data/app/services/hyrax/analytics/ga4/events.rb +25 -0
  112. data/app/services/hyrax/analytics/ga4/events_daily.rb +36 -0
  113. data/app/services/hyrax/analytics/ga4/visits.rb +33 -0
  114. data/app/services/hyrax/analytics/ga4/visits_daily.rb +24 -0
  115. data/app/services/hyrax/analytics/ga4.rb +204 -0
  116. data/app/services/hyrax/analytics/google.rb +16 -2
  117. data/app/services/hyrax/analytics/matomo.rb +16 -3
  118. data/app/services/hyrax/analytics/results.rb +6 -0
  119. data/app/services/hyrax/custom_queries/find_access_control.rb +1 -1
  120. data/app/services/hyrax/custom_queries/find_by_date_range.rb +6 -23
  121. data/app/services/hyrax/custom_queries/find_collections_by_type.rb +2 -2
  122. data/app/services/hyrax/custom_queries/find_count_by.rb +3 -31
  123. data/app/services/hyrax/custom_queries/find_file_metadata.rb +2 -2
  124. data/app/services/hyrax/custom_queries/find_models_by_access.rb +5 -27
  125. data/app/services/hyrax/embargo_manager.rb +2 -1
  126. data/app/services/hyrax/listeners/file_listener.rb +2 -2
  127. data/app/services/hyrax/lock_manager.rb +6 -6
  128. data/app/services/hyrax/lockable.rb +4 -3
  129. data/app/services/hyrax/simple_schema_loader.rb +1 -1
  130. data/app/services/hyrax/solr_service.rb +22 -8
  131. data/app/services/hyrax/statistics/query_service.rb +1 -1
  132. data/app/services/hyrax/statistics/works/over_time.rb +1 -1
  133. data/app/services/hyrax/thumbnail_path_service.rb +2 -0
  134. data/app/services/hyrax/user_stat_importer.rb +5 -5
  135. data/app/services/hyrax/valkyrie_upload.rb +9 -7
  136. data/app/services/hyrax/versioning_service.rb +10 -2
  137. data/app/services/hyrax/work_query_service.rb +2 -2
  138. data/app/services/migrate_resource_service.rb +55 -0
  139. data/app/views/_controls.html.erb +5 -5
  140. data/app/views/_masthead.html.erb +1 -1
  141. data/app/views/catalog/_search_form.html.erb +9 -16
  142. data/app/views/catalog/_thumbnail_list_collection.html.erb +1 -1
  143. data/app/views/catalog/_thumbnail_list_default.html.erb +2 -2
  144. data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +4 -4
  145. data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +1 -1
  146. data/app/views/hyrax/admin/collection_types/_form.html.erb +4 -4
  147. data/app/views/hyrax/admin/collection_types/index.html.erb +1 -1
  148. data/app/views/hyrax/admin/features/index.html.erb +1 -1
  149. data/app/views/hyrax/base/_file_manager_actions.html.erb +1 -1
  150. data/app/views/hyrax/base/_file_manager_member.html.erb +7 -4
  151. data/app/views/hyrax/base/_file_manager_thumbnail.html.erb +1 -1
  152. data/app/views/hyrax/base/_form_files.html.erb +1 -1
  153. data/app/views/hyrax/base/_form_member_of_collections.html.erb +4 -0
  154. data/app/views/hyrax/base/_show_actions.html.erb +7 -8
  155. data/app/views/hyrax/base/_work_button_row.html.erb +1 -1
  156. data/app/views/hyrax/batch_select/_add_button.html.erb +1 -1
  157. data/app/views/hyrax/content_blocks/_form.html.erb +3 -3
  158. data/app/views/hyrax/dashboard/_sidebar.html.erb +1 -1
  159. data/app/views/hyrax/dashboard/_user_activity.html.erb +2 -2
  160. data/app/views/hyrax/dashboard/collections/_form.html.erb +4 -4
  161. data/app/views/hyrax/dashboard/collections/_form_share.html.erb +6 -4
  162. data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +1 -1
  163. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +1 -1
  164. data/app/views/hyrax/dashboard/show_admin.html.erb +18 -19
  165. data/app/views/hyrax/dashboard/sidebar/_activity.html.erb +1 -1
  166. data/app/views/hyrax/embargoes/_list_expired_active_embargoes.html.erb +7 -7
  167. data/app/views/hyrax/file_sets/_actions.html.erb +9 -1
  168. data/app/views/hyrax/file_sets/_permission_form.html.erb +4 -2
  169. data/app/views/hyrax/file_sets/_show_actions.html.erb +1 -1
  170. data/app/views/hyrax/homepage/_featured.html.erb +1 -1
  171. data/app/views/hyrax/homepage/_recent_document.html.erb +2 -2
  172. data/app/views/hyrax/leases/_list_expired_active_leases.html.erb +6 -6
  173. data/app/views/hyrax/my/collections/_list_collections.html.erb +1 -1
  174. data/app/views/hyrax/my/collections/_tabs.html.erb +1 -1
  175. data/app/views/hyrax/pages/_form.html.erb +8 -8
  176. data/app/views/hyrax/transfers/_received.html.erb +1 -1
  177. data/app/views/hyrax/uploads/create.json.jbuilder +2 -2
  178. data/app/views/hyrax/users/_activity_log.html.erb +15 -9
  179. data/app/views/hyrax/users/_user_row.html.erb +6 -3
  180. data/app/views/hyrax/users/_vitals.html.erb +3 -2
  181. data/app/views/layouts/_head_tag_content.html.erb +2 -0
  182. data/app/views/shared/_appearance_styles.html.erb +5 -1
  183. data/app/views/shared/_ga4.html.erb +11 -0
  184. data/app/views/shared/_select_work_type_modal.html.erb +10 -1
  185. data/bin/db-migrate-seed.sh +3 -3
  186. data/bin/dev-entrypoint.sh +7 -2
  187. data/bin/{db-wait.sh → service-wait.sh} +1 -1
  188. data/bin/worker-entrypoint.sh +8 -0
  189. data/chart/hyrax/templates/deployment-worker.yaml +2 -2
  190. data/config/locales/hyrax.en.yml +4 -2
  191. data/config/metadata/basic_metadata.yaml +20 -0
  192. data/config/metadata/hyrax_internal_metadata.yaml +1 -1
  193. data/docker-compose-dassie.yml +167 -0
  194. data/docker-compose-koppie.yml +21 -36
  195. data/docker-compose-sirenia.yml +50 -44
  196. data/docker-compose.yml +2 -183
  197. data/documentation/developing-your-hyrax-based-app.md +2 -2
  198. data/hyrax.gemspec +5 -4
  199. data/lib/freyja/custom_query_container.rb +5 -0
  200. data/lib/freyja/metadata_adapter.rb +32 -0
  201. data/lib/freyja/persister.rb +42 -0
  202. data/lib/freyja/query_service.rb +20 -0
  203. data/lib/freyja/resource_factory.rb +8 -0
  204. data/lib/freyja.rb +14 -0
  205. data/lib/frigg/custom_query_container.rb +5 -0
  206. data/lib/frigg/metadata_adapter.rb +22 -0
  207. data/lib/frigg/persister.rb +33 -0
  208. data/lib/frigg/query_service.rb +15 -0
  209. data/lib/frigg.rb +13 -0
  210. data/lib/generators/hyrax/install_generator.rb +5 -0
  211. data/lib/generators/hyrax/templates/config/analytics.yml +6 -1
  212. data/lib/generators/hyrax/templates/config/initializers/1_valkyrie.rb +6 -2
  213. data/lib/generators/hyrax/templates/config/valkyrie_index.yml +1 -1
  214. data/lib/goddess/custom_query_container.rb +71 -0
  215. data/lib/goddess/metadata.rb +13 -0
  216. data/lib/goddess/query.rb +176 -0
  217. data/lib/hyrax/configuration.rb +83 -0
  218. data/lib/hyrax/engine.rb +2 -0
  219. data/lib/hyrax/form_fields.rb +1 -3
  220. data/lib/hyrax/name.rb +5 -0
  221. data/lib/hyrax/rubocop/custom_cops.rb +30 -0
  222. data/lib/hyrax/specs/capybara.rb +10 -6
  223. data/lib/hyrax/specs/shared_specs/factories/admin_sets.rb +2 -0
  224. data/lib/hyrax/specs/shared_specs/factories/hyrax_embargo.rb +4 -0
  225. data/lib/hyrax/specs/shared_specs/factories/hyrax_lease.rb +4 -0
  226. data/lib/hyrax/specs/shared_specs/factories/hyrax_work.rb +16 -2
  227. data/lib/hyrax/specs/shared_specs/hydra_works.rb +1 -1
  228. data/lib/hyrax/transactions/admin_set_destroy.rb +2 -1
  229. data/lib/hyrax/transactions/collection_destroy.rb +2 -1
  230. data/lib/hyrax/transactions/container.rb +9 -0
  231. data/lib/hyrax/transactions/steps/add_file_sets.rb +2 -1
  232. data/lib/hyrax/transactions/steps/delete_permission_template.rb +30 -0
  233. data/lib/hyrax/transactions/steps/delete_resource.rb +1 -1
  234. data/lib/hyrax/transactions/steps/save_collection_logo.rb +2 -1
  235. data/lib/hyrax/valkyrie_can_can_adapter.rb +8 -1
  236. data/lib/hyrax/version.rb +1 -1
  237. data/lib/wings/active_fedora_converter.rb +13 -5
  238. data/lib/wings/converter_value_mapper.rb +1 -0
  239. data/lib/wings/services/custom_queries/find_collections_by_type.rb +2 -1
  240. data/lib/wings/services/custom_queries/find_file_metadata.rb +2 -2
  241. data/lib/wings/setup.rb +12 -3
  242. data/lib/wings/transformer_value_mapper.rb +5 -1
  243. data/lib/wings/valkyrie/persister.rb +3 -1
  244. data/template.rb +1 -1
  245. metadata +77 -19
  246. data/.koppie/scripts/db-migrate-seed.sh +0 -9
  247. data/.koppie/scripts/entrypoint.sh +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 791fb1a29523524e62036fd25aed45e6297d4d010e4b20bbcd9abe468bb30278
4
- data.tar.gz: fbfdf5b3523294fe5dff601c92412967da57fdd02ac6c28d2384f18e8033cb4e
3
+ metadata.gz: 1e1143acd065d9ea879f9d47024e4b14603dce26ce528082ba1d358a3aec9629
4
+ data.tar.gz: 4b75c209e9caace3457521ec1af21fc59d8250bf6a4536e74af63061d07d69bf
5
5
  SHA512:
6
- metadata.gz: 98fbab4485f2bb977cfb0fe755a05a98f39a2ba6f575420bae41a70d5e361aae482d81da902203afc49aa9171decafa3d4b87d6d58c0ee05e14a9ff8221f545b
7
- data.tar.gz: 8846f839b4040ce79e52738da5fe3585fa176041cc6805c8c124724c8db006d6fee2ff30e5d286bfc0ca76de1e10a331bf608c9f88109208b6bdffc2d90d3023
6
+ metadata.gz: 248c5cdb08d506306f7e7664f17647b7af8c0afea32a583d1fe1698cf2346b57caa3d276f4c684627326ff174340a27ea5a74cf8c79d83b79d23285feef8c06e
7
+ data.tar.gz: dbe9e52dea97e0162fa943120f6f3507cb25ad0fd945a7baf693ded264ee5b7308d20894f8220af43471f0cb08fb1c3b7512a5e116261bba22c425369baece15
data/.circleci/config.yml CHANGED
@@ -1,181 +1,12 @@
1
1
  version: 2.1
2
- orbs:
3
- samvera: samvera/circleci-orb@1
4
- browser-tools: circleci/browser-tools@1.3
5
- ruby: circleci/ruby@2
6
- node: circleci/node@5
7
-
8
- executors:
9
- hyrax:
10
- parameters:
11
- fcrepo_version:
12
- type: string
13
- default: '4.7.5'
14
- hyrax_app:
15
- type: string
16
- default: 'dassie'
17
- postgres_version:
18
- type: string
19
- default: '14.9'
20
- redis_version:
21
- type: string
22
- default: '6.2'
23
- ruby_type:
24
- type: string
25
- default: 'ruby'
26
- ruby_version:
27
- type: string
28
- default: '2.5.5'
29
- solr_port:
30
- type: string
31
- default: '8985'
32
- solr_version:
33
- type: string
34
- default: '8.11-slim'
35
- environment:
36
- RAILS_ENV: test
37
- RACK_ENV: test
38
- FCREPO_PORT: 8080
39
- POSTGRES_DB: circle_test
40
- POSTGRES_HOST: 127.0.0.1
41
- POSTGRES_USER: postgres
42
- docker:
43
- - image: "ghcr.io/samvera/hyrax/<< parameters.hyrax_app >>-dev:<< pipeline.git.revision >>"
44
- - image: seleniarm/standalone-chromium:114.0
45
- environment:
46
- SE_NODE_SESSION_TIMEOUT: 1200
47
- START_XVFB: "false"
48
-
49
- - image: samvera/fcrepo4:<< parameters.fcrepo_version >>
50
- environment:
51
- CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
52
- - image: zookeeper:3.4
53
- - image: solr:<< parameters.solr_version >>
54
- environment:
55
- VERBOSE: yes
56
- SECURITY_JSON: '{"authentication":{"blockUnknown": false, "class":"solr.BasicAuthPlugin", "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, "realm":"My Solr users", "forwardCredentials": false}, "authorization":{ "class":"solr.RuleBasedAuthorizationPlugin", "permissions":[{"name":"security-edit", "role":"admin"}], "user-role":{"solr":"admin"}}}'
57
- command: sh -c "server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json \"${SECURITY_JSON}\" && solr-fg -cloud -noprompt -p << parameters.solr_port >> -z localhost:2181"
58
- - image: redis:<< parameters.redis_version >>
59
- - image: cimg/postgres:<< parameters.postgres_version >>
60
2
 
3
+ # Run a no-op workflow so CircleCI reports as a green check in pull requests.
4
+ # This file is needed until all active hyrax branches have moved off CircleCI
5
+ # and the integration can be deactivated.
61
6
  jobs:
62
- kaniko-build:
63
- parameters:
64
- hyrax_app:
65
- type: string
66
- default: dassie
67
- ruby_version:
68
- type: string
69
- default: 3.2.2
70
- docker:
71
- - image: gcr.io/kaniko-project/executor:v1.14.0-debug
72
- entrypoint: ""
73
- steps:
74
- - run:
75
- name: Configure GHCR credentials
76
- command: |
77
- cat > /kaniko/.docker/config.json \<<- JSON
78
- {
79
- "auths": {
80
- "ghcr.io": {
81
- "auth": "$(echo -n $GHCR_USER:$GHCR_TOKEN | base64)"
82
- }
83
- }
84
- }
85
- JSON
86
- - run:
87
- name: Build and Push image
88
- command: |
89
- /kaniko/executor \
90
- --cache=true \
91
- --build-arg "EXTRA_APK_PACKAGES=git bash" \
92
- --build-arg "APP_PATH=.<< parameters.hyrax_app >>" \
93
- --build-arg "RUBY_VERSION=<< parameters.ruby_version >>" \
94
- --context "git://github.com/$(echo $CIRCLE_REPOSITORY_URL | sed -E 's/.+:(.+)\.git/\1/')#refs/heads/${CIRCLE_BRANCH}#${CIRCLE_SHA1}" \
95
- --target "hyrax-engine-dev" \
96
- --destination "ghcr.io/samvera/hyrax/<< parameters.hyrax_app >>-dev:${CIRCLE_SHA1}"
97
-
98
- hyrax-test:
99
- parameters:
100
- hyrax_app:
101
- type: string
102
- default: dassie
103
- hyrax_valkyrie:
104
- type: string
105
- default: "false"
106
- ruby_version:
107
- type: string
108
- default: 3.2.2
109
- executor:
110
- name: hyrax
111
- hyrax_app: << parameters.hyrax_app >>
112
- ruby_version: << parameters.ruby_version >>
113
- resource_class: large
114
- parallelism: 12
115
- environment:
116
- CHROME_HEADLESS_MODE: true
117
- DATABASE_URL: postgresql://postgres@127.0.0.1/circle_test
118
- HUB_URL: http://localhost:4444/wd/hub
119
- HYRAX_VALKYRIE: << parameters.hyrax_valkyrie >>
120
- IN_DOCKER: true
121
- KARMA_BROWSER: remote-chromium
122
- SOLR_URL: http://127.0.0.1:8985/solr/hydra-test
123
- VALKYRIE_SOLR_CORE: valkyrie-test
124
- VALKYRIE_SOLR_PORT: 8985
125
- steps:
126
- - run:
127
- name: Create solr core
128
- command: |
129
- cd /app/samvera/hyrax-webapp/solr/conf
130
- zip -1 -r solr_conf.zip ./*
131
- db-wait.sh localhost:8985 # wait for solr to be available before hitting the API
132
- curl -H "Content-type:application/octet-stream" --data-binary @solr_conf.zip "http://solr:SolrRocks@127.0.0.1:8985/solr/admin/configs?action=UPLOAD&name=solrconfig"
133
- curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8985/api/collections/ -d '{create: {name: hydra-test, config: solrconfig, numShards: 1}}'
134
- curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8985/api/collections/ -d '{create: {name: valkyrie-test, config: solrconfig, numShards: 1}}'
135
- - ruby/rspec-test:
136
- app-dir: /app/samvera/hyrax-engine
137
-
138
- rubocop:
139
- working_directory: ~/hyrax
7
+ build:
140
8
  docker:
141
- - image: cimg/ruby:3.2.2
9
+ - image: cimg/base:current
10
+ resource_class: small
142
11
  steps:
143
- - checkout
144
- - run: bundle install
145
- - ruby/rubocop-check
146
-
147
- workflows:
148
- version: 2
149
- dassie:
150
- jobs:
151
- - rubocop
152
- - kaniko-build:
153
- name: "dassie-build"
154
- ruby_version: "3.2.2"
155
- hyrax_app: "dassie"
156
- - hyrax-test:
157
- name: "dassie-test"
158
- ruby_version: "3.2.2"
159
- hyrax_app: "dassie"
160
- requires:
161
- - dassie-build
162
- - hyrax-test:
163
- name: "dassie-valkyrie-test"
164
- ruby_version: "3.2.2"
165
- hyrax_app: "dassie"
166
- hyrax_valkyrie: "1"
167
- requires:
168
- - dassie-build
169
-
170
- koppie:
171
- jobs:
172
- - kaniko-build:
173
- name: "koppie-build"
174
- ruby_version: "3.2.2"
175
- hyrax_app: "koppie"
176
- - hyrax-test:
177
- name: "koppie-test"
178
- ruby_version: "3.2.2"
179
- hyrax_app: "koppie"
180
- requires:
181
- - koppie-build
12
+ - run: echo "Hyrax tests have moved to Github Actions."
data/.dassie/.env CHANGED
@@ -2,7 +2,7 @@ ANALYTICS_START_DATE=2021-08-21
2
2
  BUNDLE_GEMFILE=Gemfile.dassie
3
3
  BUNDLE_PATH=/app/bundle
4
4
  CH12N_TOOL=fits_servlet
5
- CHROME_HEADLESS_MODE=false
5
+ CHROME_HEADLESS_MODE=true
6
6
  DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
7
7
  DATABASE_TEST_URL=postgresql://hyrax_user:hyrax_password@postgres/hyrax_test?pool=5
8
8
  DATABASE_URL=postgresql://hyrax_user:hyrax_password@postgres/hyrax?pool=5
@@ -13,15 +13,16 @@ FCREPO_PORT=8080
13
13
  FCREPO_REST_PATH=rest
14
14
  FCREPO_TEST_BASE_PATH=/test
15
15
  FITS_SERVLET_URL=http://fits:8080/fits
16
- HUB_URL=http://chrome:4444/wd/hub
16
+ HUB_URL=http://chrome:4444
17
17
  HYRAX_ANALYTICS=false
18
18
  HYRAX_ANALYTICS_PROVIDER=google
19
19
  HYRAX_DERIVATIVES_PATH=/app/samvera/hyrax-webapp/derivatives/
20
20
  HYRAX_ENGINE_PATH=/app/samvera/hyrax-engine
21
21
  HYRAX_UPLOAD_PATH=/app/samvera/hyrax-webapp/uploads/
22
+ HYRAX_VALKYRIE=true
22
23
  IN_DOCKER=true
23
24
  KARMA_BROWSER=remote-chromium
24
- KARMA_HOSTNAME=app
25
+ KARMA_HOSTNAME=web
25
26
  MEMCACHED_HOST=memcached
26
27
  RACK_ENV=development
27
28
  RAILS_ENV=development
@@ -35,5 +36,9 @@ SOLR_HOST=solr
35
36
  SOLR_PORT=8983
36
37
  SOLR_TEST_URL=http://solr:8983/solr/hyrax_test
37
38
  SOLR_URL=http://solr:8983/solr/hyrax
39
+ TB_RSPEC_OPTIONS=--force-color --format RspecJunitFormatter --out rspec.xml
40
+ TB_RSPEC_FORMATTER=progress
41
+ VALKYRIE_ID_TYPE=string
38
42
  VALKYRIE_SOLR_HOST=solr
39
43
  VALKYRIE_SOLR_PORT=8983
44
+ VALKYRIE_TRANSITION=false
data/.dassie/Gemfile CHANGED
@@ -14,12 +14,23 @@ gem 'coffee-rails', '~> 4.2'
14
14
  gem 'dalli'
15
15
  gem 'devise'
16
16
  gem 'devise-guests', '~> 0.8'
17
+
18
+ # Required because grpc and google-protobuf gem's binaries are not compatible with Alpine Linux.
19
+ # To install the package in Alpine: `apk add ruby-grpc`
20
+ # The pinned versions should match the version provided by the Alpine packages.
21
+ if RUBY_PLATFORM =~ /musl/
22
+ path '/usr/lib/ruby/gems/3.2.0' do
23
+ gem 'google-protobuf', '~> 3.24.4', force_ruby_platform: true
24
+ gem 'grpc', '~> 1.59.3', force_ruby_platform: true
25
+ end
26
+ end
27
+
17
28
  gemspec name: 'hyrax', path: ENV.fetch('HYRAX_ENGINE_PATH', '..')
18
29
  gem 'jbuilder', '~> 2.5'
19
30
  gem 'jquery-rails'
20
31
  gem 'pg', '~> 1.3'
21
32
  gem 'puma'
22
- gem 'rails', '~> 6.1'
33
+ gem 'rails', '~> 6.1', '>= 6.1.7.10'
23
34
  gem 'riiif', '~> 2.1'
24
35
  gem 'rsolr', '>= 1.0', '< 3'
25
36
  gem 'sass-rails', '~> 6.0'
@@ -46,4 +57,4 @@ group :development, :test do
46
57
  gem 'pry-doc'
47
58
  gem 'pry-rails'
48
59
  gem 'pry-rescue'
49
- end
60
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:work_resource GenericWorkResource`
5
+ module Hyrax
6
+ # Generated controller for GenericWorkResource
7
+ class GenericWorkResourcesController < ApplicationController
8
+ # Adds Hyrax behaviors to the controller.
9
+ include Hyrax::WorksControllerBehavior
10
+ include Hyrax::BreadcrumbsForWorks
11
+ self.curation_concern_type = ::GenericWorkResource
12
+
13
+ # Use a Valkyrie aware form service to generate Valkyrie::ChangeSet style
14
+ # forms.
15
+ self.work_form_service = Hyrax::FormFactory.new
16
+ end
17
+ end
@@ -6,7 +6,13 @@ module Hyrax
6
6
  # Adds Hyrax behaviors to the controller.
7
7
  include Hyrax::WorksControllerBehavior
8
8
  include Hyrax::BreadcrumbsForWorks
9
- self.curation_concern_type = ::GenericWork
9
+ if Hyrax.config.valkyrie_transition?
10
+ self.curation_concern_type = ::GenericWorkResource
11
+
12
+ self.work_form_service = Hyrax::FormFactory.new
13
+ else
14
+ self.curation_concern_type = ::GenericWork
15
+ end
10
16
 
11
17
  # Use this line if you want to use a custom presenter
12
18
  self.show_presenter = Hyrax::GenericWorkPresenter
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:work_resource GenericWorkResource`
5
+ #
6
+ # @see https://github.com/samvera/hyrax/wiki/Hyrax-Valkyrie-Usage-Guide#forms
7
+ # @see https://github.com/samvera/valkyrie/wiki/ChangeSets-and-Dirty-Tracking
8
+ class GenericWorkResourceForm < Hyrax::Forms::ResourceForm(GenericWorkResource)
9
+ include Hyrax::FormFields(:basic_metadata)
10
+ include Hyrax::FormFields(:generic_work_resource)
11
+
12
+ # Define custom form fields using the Valkyrie::ChangeSet interface
13
+ #
14
+ # property :my_custom_form_field
15
+
16
+ # if you want a field in the form, but it doesn't have a directly corresponding
17
+ # model attribute, make it virtual
18
+ #
19
+ # property :user_input_not_destined_for_the_model, virtual: true
20
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:work_resource GenericWorkResource`
5
+ class GenericWorkResourceIndexer < Hyrax::ValkyrieWorkIndexer
6
+ include Hyrax::Indexer(:basic_metadata)
7
+ include Hyrax::Indexer(:generic_work_resource)
8
+
9
+ # Uncomment this block if you want to add custom indexing behavior:
10
+ # def to_solr
11
+ # super.tap do |index_document|
12
+ # index_document[:my_field_tesim] = resource.my_field.map(&:to_s)
13
+ # index_document[:other_field_ssim] = resource.other_field
14
+ # end
15
+ # end
16
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AdminSetResource < Hyrax::AdministrativeSet
4
+ include Hyrax::ArResource
5
+ include Hyrax::Permissions::Readable
6
+ Hyrax::ValkyrieLazyMigration.migrating(self, from: ::AdminSet) if Hyrax.config.valkyrie_transition?
7
+
8
+ # include WithPermissionTemplateShim
9
+ end
@@ -32,4 +32,6 @@ class CollectionResource < Hyrax::PcdmCollection
32
32
  #
33
33
  include Hyrax::Schema(:basic_metadata)
34
34
  include Hyrax::Schema(:collection_resource)
35
+
36
+ Hyrax::ValkyrieLazyMigration.migrating(self, from: ::Collection) if Hyrax.config.valkyrie_transition?
35
37
  end
@@ -3,3 +3,5 @@
3
3
  class FileSet < ActiveFedora::Base
4
4
  include ::Hyrax::FileSetBehavior
5
5
  end
6
+
7
+ Hyrax::ValkyrieLazyMigration.migrating(Hyrax::FileSet, from: ::FileSet) if Hyrax.config.valkyrie_transition?
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:work_resource GenericWorkResource`
5
+ class GenericWorkResource < Hyrax::Work
6
+ include Hyrax::Schema(:basic_metadata)
7
+ include Hyrax::Schema(:generic_work_resource)
8
+
9
+ Hyrax::ValkyrieLazyMigration.migrating(self, from: GenericWork) if Hyrax.config.valkyrie_transition?
10
+ end
@@ -0,0 +1,2 @@
1
+ <%# This is a search result view %>
2
+ <%= render 'catalog/document', document: generic_work_resource, document_counter: generic_work_resource_counter %>
@@ -1,10 +1,15 @@
1
1
  analytics:
2
+ ga4:
3
+ analytics_id: <%= ENV['GOOGLE_ANALYTICS_ID'] %>
4
+ property_id: <%= ENV['GOOGLE_ANALYTICS_PROPERTY_ID'] %>
5
+ account_json: <%= ENV['GOOGLE_ACCOUNT_JSON'] %>
6
+ account_json_path: <%= ENV['GOOGLE_ACCOUNT_JSON_PATH'] %>
2
7
  google:
3
8
  analytics_id: <%= ENV['GOOGLE_ANALYTICS_ID'] %>
4
9
  app_name: <%= ENV['GOOGLE_OAUTH_APP_NAME'] %>
5
10
  app_version: <%= ENV['GOOGLE_OAUTH_APP_VERSION'] %>
6
- privkey_value: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_VALUE'] %>
7
11
  privkey_path: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_PATH'] %>
12
+ privkey_value: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_VALUE'] %>
8
13
  privkey_secret: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_SECRET'] %>
9
14
  client_email: <%= ENV['GOOGLE_OAUTH_CLIENT_EMAIL'] %>
10
15
  matomo:
@@ -18,5 +18,29 @@ module Dassie
18
18
 
19
19
  # use SideKiq by default
20
20
  config.active_job.queue_adapter = :sidekiq
21
+ # inline can be useful when debugging
22
+ # config.active_job.queue_adapter = :inline
23
+
24
+ ##
25
+ # When using the Goddess adapter of Hyrax 5.x, we want to have a
26
+ # canonical answer for what are the Work Types that we want to manage.
27
+ #
28
+ # We don't want to rely on `Hyrax.config.curation_concerns`, as these are
29
+ # the ActiveFedora implementations.
30
+ #
31
+ # @return [Array<Class>]
32
+ def self.work_types
33
+ Hyrax.config.curation_concerns.map do |cc|
34
+ if cc.to_s.end_with?("Resource")
35
+ cc
36
+ else
37
+ # We may encounter a case where we don't have an old ActiveFedora
38
+ # model that we're mapping to. For example, let's say we add Game as
39
+ # a curation concern. And Game has only ever been written/modeled via
40
+ # Valkyrie. We don't want to also have a GameResource.
41
+ "#{cc}Resource".safe_constantize || cc
42
+ end
43
+ end
44
+ end
21
45
  end
22
46
  end
@@ -13,6 +13,8 @@ Hyrax.config do |config|
13
13
  config.register_curation_concern :"namespaced_works/nested_work"
14
14
  # Injected via `rails g hyrax:work_resource Monograph`
15
15
  config.register_curation_concern :monograph
16
+ # Injected via `rails g hyrax:work_resource GenericWorkResource`
17
+ # config.register_curation_concern :generic_work_resource
16
18
 
17
19
  config.iiif_image_server = true
18
20
  config.work_requires_files = false
@@ -65,9 +67,17 @@ Hyrax.config do |config|
65
67
  # config.admin_set_model = 'Hyrax::AdministrativeSet'
66
68
 
67
69
  # dassie needs legacy AF models
68
- config.collection_model = '::Collection'
69
- config.admin_set_model = 'AdminSet'
70
- config.file_set_model = '::FileSet'
70
+ # If using Frayja/Frigg then use the resource they provide
71
+ if Hyrax.config.valkyrie_transition?
72
+ config.collection_model = 'CollectionResource'
73
+ config.admin_set_model = 'AdminSetResource'
74
+ config.file_set_model = 'Hyrax::FileSet'
75
+ else
76
+ # dassie needs legacy AF models
77
+ config.collection_model = '::Collection'
78
+ config.admin_set_model = 'AdminSet'
79
+ config.file_set_model = '::FileSet'
80
+ end
71
81
  end
72
82
 
73
83
  Date::DATE_FORMATS[:standard] = "%m/%d/%Y"
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+ # rubocop:disable Metrics/BlockLength
3
+
4
+ # Freyja setup adapted from hyku
5
+ if Hyrax.config.valkyrie_transition?
6
+ Rails.application.config.after_initialize do
7
+ [ # List AF work models
8
+ GenericWork
9
+ ].each do |klass|
10
+ Wings::ModelRegistry.register("#{klass}Resource".constantize, klass)
11
+ # we register itself so we can pre-translate the class in Freyja instead of having to translate in each query_service
12
+ Wings::ModelRegistry.register(klass, klass)
13
+ end
14
+ Wings::ModelRegistry.register(Collection, Collection)
15
+ Wings::ModelRegistry.register(CollectionResource, Collection)
16
+ Wings::ModelRegistry.register(AdminSet, AdminSet)
17
+ Wings::ModelRegistry.register(AdminSetResource, AdminSet)
18
+ Wings::ModelRegistry.register(FileSet, FileSet)
19
+ Wings::ModelRegistry.register(Hyrax::FileSet, FileSet)
20
+ Wings::ModelRegistry.register(Hydra::PCDM::File, Hydra::PCDM::File)
21
+ Wings::ModelRegistry.register(Hyrax::FileMetadata, Hydra::PCDM::File)
22
+
23
+ Valkyrie::MetadataAdapter.register(
24
+ Freyja::MetadataAdapter.new,
25
+ :freyja
26
+ )
27
+ Valkyrie.config.metadata_adapter = :freyja
28
+ Hyrax.config.query_index_from_valkyrie = true
29
+ Hyrax.config.index_adapter = :solr_index
30
+
31
+ Valkyrie::StorageAdapter.register(
32
+ Valkyrie::Storage::VersionedDisk.new(base_path: Rails.root.join("storage", "files"),
33
+ file_mover: FileUtils.method(:cp)),
34
+ :disk
35
+ )
36
+ Valkyrie.config.storage_adapter = :disk
37
+ Valkyrie.config.indexing_adapter = :solr_index
38
+
39
+ # load all the sql based custom queries
40
+ [
41
+ Hyrax::CustomQueries::Navigators::CollectionMembers,
42
+ Hyrax::CustomQueries::Navigators::ChildCollectionsNavigator,
43
+ Hyrax::CustomQueries::Navigators::ParentCollectionsNavigator,
44
+ Hyrax::CustomQueries::Navigators::ChildFileSetsNavigator,
45
+ Hyrax::CustomQueries::Navigators::ChildWorksNavigator,
46
+ Hyrax::CustomQueries::Navigators::FindFiles,
47
+ Hyrax::CustomQueries::FindAccessControl,
48
+ Hyrax::CustomQueries::FindCollectionsByType,
49
+ Hyrax::CustomQueries::FindFileMetadata,
50
+ Hyrax::CustomQueries::FindIdsByModel,
51
+ Hyrax::CustomQueries::FindManyByAlternateIds,
52
+ Hyrax::CustomQueries::FindModelsByAccess,
53
+ Hyrax::CustomQueries::FindCountBy,
54
+ Hyrax::CustomQueries::FindByDateRange,
55
+ # Hyrax::CustomQueries::FindBySourceIdentifier # from bulkrax
56
+ ].each do |handler|
57
+ Hyrax.query_service.services[0].custom_queries.register_query_handler(handler)
58
+ end
59
+
60
+ # [
61
+ # Wings::CustomQueries::FindBySourceIdentifier
62
+ # ].each do |handler|
63
+ # Hyrax.query_service.services[1].custom_queries.register_query_handler(handler)
64
+ # end
65
+
66
+ # Register each work resource pair
67
+ # Wings::ModelRegistry.register(GenericWorkResource, GenericWork)
68
+ end
69
+
70
+ Rails.application.config.to_prepare do
71
+ AdminSetResource.class_eval do
72
+ attribute :internal_resource, Valkyrie::Types::Any.default("AdminSet"), internal: true
73
+ end
74
+
75
+ CollectionResource.class_eval do
76
+ attribute :internal_resource, Valkyrie::Types::Any.default("Collection"), internal: true
77
+ end
78
+
79
+ Valkyrie.config.resource_class_resolver = lambda do |resource_klass_name|
80
+ # TODO: Can we use some kind of lookup.
81
+ klass_name = resource_klass_name.gsub(/^Wings\((.+)\)$/, '\1')
82
+ klass_name = klass_name.gsub(/Resource$/, '')
83
+ if %w[
84
+ GenericWork
85
+ ].include?(klass_name)
86
+ "#{klass_name}Resource".constantize
87
+ elsif 'Collection' == klass_name
88
+ CollectionResource
89
+ elsif 'AdminSet' == klass_name
90
+ AdminSetResource
91
+ # Without this mapping, we'll see cases of Postgres Valkyrie adapter attempting to write to
92
+ # Fedora. Yeah!
93
+ elsif 'Hydra::AccessControl' == klass_name
94
+ Hyrax::AccessControl
95
+ elsif 'FileSet' == klass_name
96
+ Hyrax::FileSet
97
+ elsif 'Hydra::AccessControls::Embargo' == klass_name
98
+ Hyrax::Embargo
99
+ elsif 'Hydra::AccessControls::Lease' == klass_name
100
+ Hyrax::Lease
101
+ elsif 'Hydra::PCDM::File' == klass_name
102
+ Hyrax::FileMetadata
103
+ else
104
+ klass_name.constantize
105
+ end
106
+ end
107
+ end
108
+ # rubocop:enable Metrics/BlockLength
109
+ end
@@ -0,0 +1,22 @@
1
+ # Simple yaml config-driven schema which is used to define model attributes,
2
+ # index key names, and form properties.
3
+ #
4
+ # Attributes must have a type but all other configuration options are optional.
5
+ #
6
+ # attributes:
7
+ # attribute_name:
8
+ # type: string
9
+ # multiple: false
10
+ # index_keys:
11
+ # - "attribute_name_sim"
12
+ # form:
13
+ # required: true
14
+ # primary: true
15
+ # multiple: false
16
+ #
17
+ # @see config/metadata/basic_metadata.yaml for an example configuration
18
+ #
19
+ # Generated via
20
+ # `rails generate hyrax:work_resource GenericWorkResource`
21
+
22
+ attributes: {}
@@ -1,12 +1,6 @@
1
1
  development:
2
- host: <%= ENV['VALKYRIE_SOLR_HOST'] %>
3
- port: <%= ENV['VALKYRIE_SOLR_PORT'] %>
4
- core: <%= ENV['VALKYRIE_SOLR_CORE'] || 'hyrax-valkyrie-dev' %>
5
- test:
6
- host: <%= ENV['VALKYRIE_SOLR_HOST'] %>
7
- port: <%= ENV['VALKYRIE_SOLR_PORT'] || 8987 %>
8
- core: <%= ENV['VALKYRIE_SOLR_CORE'] || 'hyrax-valkyrie-test' %>
2
+ url: <%= ENV['SOLR_DEVELOPMENT_URL'] || ENV['SOLR_URL'] || "http://127.0.0.1:8983/solr/hyrax-valkyrie-dev" %>
3
+ test: &test
4
+ url: <%= ENV['SOLR_TEST_URL'] || ENV['SOLR_URL'] || "http://127.0.0.1:#{ENV.fetch('SOLR_TEST_PORT', 8987)}/solr/hyrax-valkyrie-test" %>
9
5
  production:
10
- host: <%= ENV['VALKYRIE_SOLR_HOST'] %>
11
- port: <%= ENV['VALKYRIE_SOLR_PORT'] %>
12
- core: <%= ENV['VALKYRIE_SOLR_CORE'] %>
6
+ url: <%= ENV['SOLR_URL'] || "http://127.0.0.1:8983/solr/hyrax-valkyrie" %>
@@ -0,0 +1,5 @@
1
+ class ValkyrieIdToString < ActiveRecord::Migration[6.1]
2
+ def change
3
+ change_column :orm_resources, :id, :text, default: -> { '(uuid_generate_v4())::text' }
4
+ end
5
+ end
data/.dassie/db/schema.rb CHANGED
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2023_08_21_153635) do
13
+ ActiveRecord::Schema.define(version: 2024_05_06_070809) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "plpgsql"
@@ -251,7 +251,7 @@ ActiveRecord::Schema.define(version: 2023_08_21_153635) do
251
251
  t.index ["namespace"], name: "index_minter_states_on_namespace", unique: true
252
252
  end
253
253
 
254
- create_table "orm_resources", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
254
+ create_table "orm_resources", id: :text, default: -> { "(uuid_generate_v4())::text" }, force: :cascade do |t|
255
255
  t.jsonb "metadata", default: {}, null: false
256
256
  t.datetime "created_at", null: false
257
257
  t.datetime "updated_at", null: false
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:work_resource GenericWorkResource`
5
+ require 'rails_helper'
6
+ require 'hyrax/specs/shared_specs/indexers'
7
+
8
+ RSpec.describe GenericWorkResourceIndexer do
9
+ let(:indexer_class) { described_class }
10
+ let(:resource) { GenericWorkResource.new }
11
+
12
+ it_behaves_like 'a Hyrax::Resource indexer'
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:work_resource GenericWorkResource`
5
+ require 'rails_helper'
6
+ require 'hyrax/specs/shared_specs/hydra_works'
7
+
8
+ RSpec.describe GenericWorkResource do
9
+ subject(:work) { described_class.new }
10
+
11
+ it_behaves_like 'a Hyrax::Work'
12
+ end