hyrax 5.1.0.pre.beta1 → 5.2.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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/.dassie/.env +4 -0
  3. data/.dassie/Gemfile +12 -7
  4. data/.dassie/app/controllers/application_controller.rb +4 -0
  5. data/.dassie/app/helpers/hyrax_helper.rb +4 -0
  6. data/.dassie/app/models/ability.rb +4 -0
  7. data/.dassie/app/models/user.rb +11 -0
  8. data/.dassie/app/views/shared/_footer.html.erb +17 -0
  9. data/.dassie/config/application.rb +1 -1
  10. data/.dassie/config/database.yml +18 -0
  11. data/.dassie/config/environments/production.rb +1 -1
  12. data/.dassie/config/fedora.yml +6 -6
  13. data/.dassie/config/initializers/devise.rb +1 -0
  14. data/.dassie/config/initializers/profiler.rb +5 -0
  15. data/.dassie/config/locales/hyrax.en.yml +1 -1
  16. data/.dassie/config/puma.rb +55 -5
  17. data/.dassie/config/routes.rb +2 -0
  18. data/.dassie/db/migrate/20250328100249_user_roles.rb +20 -0
  19. data/.dassie/db/schema.rb +123 -109
  20. data/.github/workflows/lint-build-test.yml +34 -5
  21. data/.koppie/.env +1 -1
  22. data/.koppie/Gemfile +10 -6
  23. data/.koppie/app/controllers/application_controller.rb +4 -0
  24. data/.koppie/app/helpers/hyrax_helper.rb +4 -0
  25. data/.koppie/app/models/ability.rb +4 -0
  26. data/.koppie/app/models/user.rb +10 -0
  27. data/.koppie/app/views/shared/_footer.html.erb +17 -0
  28. data/.koppie/config/database.yml +2 -9
  29. data/.koppie/config/environments/development.rb +9 -0
  30. data/.koppie/config/environments/production.rb +1 -1
  31. data/.koppie/config/initializers/1_valkyrie.rb +5 -5
  32. data/.koppie/config/initializers/devise.rb +1 -1
  33. data/.koppie/config/initializers/profiler.rb +5 -0
  34. data/.koppie/config/locales/hyrax.en.yml +2 -2
  35. data/.koppie/config/puma.rb +26 -7
  36. data/.koppie/config/routes.rb +2 -0
  37. data/.koppie/db/schema.rb +109 -110
  38. data/CONTAINERS.md +10 -10
  39. data/Dockerfile +108 -50
  40. data/Gemfile +2 -1
  41. data/app/controllers/concerns/hyrax/valkyrie_downloads_controller_behavior.rb +1 -0
  42. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +2 -1
  43. data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +4 -4
  44. data/app/controllers/hyrax/file_sets_controller.rb +11 -0
  45. data/app/helpers/hyrax/hyrax_helper_behavior.rb +2 -2
  46. data/app/helpers/hyrax/trophy_helper.rb +1 -1
  47. data/app/jobs/concerns/hyrax/queued_job_behavior.rb +22 -0
  48. data/app/jobs/hyrax/propagate_change_depositor_job.rb +1 -1
  49. data/app/jobs/hyrax/queued_delete_job.rb +11 -0
  50. data/app/jobs/hyrax/queued_indexing_job.rb +11 -0
  51. data/app/jobs/migrate_files_to_valkyrie_job.rb +33 -21
  52. data/app/jobs/migrate_sipity_entity_job.rb +21 -0
  53. data/app/models/concerns/hyrax/ability.rb +4 -2
  54. data/app/models/concerns/hyrax/solr_document_behavior.rb +5 -2
  55. data/app/models/hyrax/file_metadata.rb +22 -7
  56. data/app/services/hyrax/analytics/ga4/base.rb +1 -1
  57. data/app/services/hyrax/analytics/ga4.rb +5 -1
  58. data/app/services/hyrax/change_depositor_service.rb +1 -1
  59. data/app/services/hyrax/characterization/valkyrie_characterization_service.rb +21 -13
  60. data/app/services/hyrax/custom_queries/find_ids_by_model.rb +31 -6
  61. data/app/services/hyrax/edit_permissions_service.rb +9 -8
  62. data/app/services/hyrax/workflow/workflow_factory.rb +3 -3
  63. data/app/services/migrate_resource_service.rb +1 -1
  64. data/app/views/_user_util_links.html.erb +2 -1
  65. data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +3 -7
  66. data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +3 -6
  67. data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +2 -3
  68. data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +1 -6
  69. data/app/views/hyrax/base/_social_media.html.erb +2 -0
  70. data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +1 -1
  71. data/app/views/hyrax/dashboard/collections/_show_document_list_menu.html.erb +13 -12
  72. data/app/views/hyrax/my/_admin_set_action_menu.html.erb +31 -27
  73. data/app/views/hyrax/my/_collection_action_menu.html.erb +40 -35
  74. data/app/views/hyrax/my/_work_action_menu.html.erb +23 -22
  75. data/bin/db-migrate-seed.sh +1 -1
  76. data/bin/dev-entrypoint.sh +3 -0
  77. data/config/features.rb +50 -40
  78. data/config/initializers/indexing_adapter_initializer.rb +4 -0
  79. data/config/initializers/new_framework_defaults_7_2.rb +6 -4
  80. data/config/initializers/reform_rails_6_1_monkey_patch.rb +29 -0
  81. data/config/metadata/core_metadata.yaml +1 -0
  82. data/docker-compose-dassie.yml +6 -6
  83. data/docker-compose-koppie.yml +2 -2
  84. data/docker-compose-sirenia.yml +2 -2
  85. data/documentation/developing-your-hyrax-based-app.md +2 -2
  86. data/hyrax.gemspec +3 -3
  87. data/lib/freyja/persister.rb +11 -4
  88. data/lib/generators/hyrax/install_generator.rb +0 -5
  89. data/lib/generators/hyrax/templates/.env +1 -1
  90. data/lib/generators/hyrax/templates/config/initializers/1_valkyrie.rb +21 -19
  91. data/lib/generators/hyrax/templates/db/migrate/20170131142607_add_permission_template_to_sipity_workflow.rb.erb +1 -1
  92. data/lib/generators/hyrax/templates/db/migrate/20170810190549_update_collection_type_column_options.rb.erb +1 -1
  93. data/lib/generators/hyrax/templates/db/migrate/20230821153635_add_fields_to_counter_metric.rb.erb +1 -1
  94. data/lib/hyrax/configuration.rb +22 -7
  95. data/lib/hyrax/controlled_vocabulary/importer/language.rb +5 -1
  96. data/lib/hyrax/transactions/steps/add_file_sets.rb +2 -1
  97. data/lib/hyrax/version.rb +1 -1
  98. data/lib/hyrax.rb +1 -0
  99. data/lib/tasks/workflow.rake +1 -2
  100. data/lib/valkyrie/indexing/redis_queue/indexing_adapter.rb +144 -0
  101. data/lib/wings/valkyrie/query_service.rb +3 -4
  102. data/template.rb +1 -1
  103. metadata +28 -14
  104. data/.github/workflows/main.yml +0 -17
data/.dassie/db/schema.rb CHANGED
@@ -10,7 +10,8 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
13
+ ActiveRecord::Schema.define(version: 2025_03_28_100249) do
14
+
14
15
  # These are extensions that must be enabled in order to support this database
15
16
  enable_extension "plpgsql"
16
17
  enable_extension "uuid-ossp"
@@ -21,8 +22,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
21
22
  t.string "document_id"
22
23
  t.string "document_type"
23
24
  t.binary "title"
24
- t.datetime "created_at", precision: nil, null: false
25
- t.datetime "updated_at", precision: nil, null: false
25
+ t.datetime "created_at", null: false
26
+ t.datetime "updated_at", null: false
26
27
  t.index ["document_id"], name: "index_bookmarks_on_document_id"
27
28
  t.index ["user_id"], name: "index_bookmarks_on_user_id"
28
29
  end
@@ -33,8 +34,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
33
34
  t.string "checked_uri"
34
35
  t.string "expected_result"
35
36
  t.string "actual_result"
36
- t.datetime "created_at", precision: nil, null: false
37
- t.datetime "updated_at", precision: nil, null: false
37
+ t.datetime "created_at", null: false
38
+ t.datetime "updated_at", null: false
38
39
  t.boolean "passed"
39
40
  t.index ["checked_uri"], name: "index_checksum_audit_logs_on_checked_uri"
40
41
  t.index ["file_set_id", "file_id"], name: "by_file_set_id_and_file_id"
@@ -48,8 +49,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
48
49
  t.string "target_url"
49
50
  t.integer "height"
50
51
  t.integer "width"
51
- t.datetime "created_at", precision: nil, null: false
52
- t.datetime "updated_at", precision: nil, null: false
52
+ t.datetime "created_at", null: false
53
+ t.datetime "updated_at", null: false
53
54
  end
54
55
 
55
56
  create_table "collection_type_participants", force: :cascade do |t|
@@ -57,16 +58,16 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
57
58
  t.string "agent_type"
58
59
  t.string "agent_id"
59
60
  t.string "access"
60
- t.datetime "created_at", precision: nil, null: false
61
- t.datetime "updated_at", precision: nil, null: false
61
+ t.datetime "created_at", null: false
62
+ t.datetime "updated_at", null: false
62
63
  t.index ["hyrax_collection_type_id"], name: "hyrax_collection_type_id"
63
64
  end
64
65
 
65
66
  create_table "content_blocks", force: :cascade do |t|
66
67
  t.string "name"
67
68
  t.text "value"
68
- t.datetime "created_at", precision: nil, null: false
69
- t.datetime "updated_at", precision: nil, null: false
69
+ t.datetime "created_at", null: false
70
+ t.datetime "updated_at", null: false
70
71
  t.string "external_key"
71
72
  end
72
73
 
@@ -83,8 +84,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
83
84
  t.integer "rgt", null: false
84
85
  t.integer "depth", default: 0, null: false
85
86
  t.integer "children_count", default: 0, null: false
86
- t.datetime "created_at", precision: nil, null: false
87
- t.datetime "updated_at", precision: nil, null: false
87
+ t.datetime "created_at", null: false
88
+ t.datetime "updated_at", null: false
88
89
  t.index ["lft"], name: "index_curation_concerns_operations_on_lft"
89
90
  t.index ["parent_id"], name: "index_curation_concerns_operations_on_parent_id"
90
91
  t.index ["rgt"], name: "index_curation_concerns_operations_on_rgt"
@@ -94,29 +95,29 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
94
95
  create_table "featured_works", force: :cascade do |t|
95
96
  t.integer "order", default: 5
96
97
  t.string "work_id"
97
- t.datetime "created_at", precision: nil, null: false
98
- t.datetime "updated_at", precision: nil, null: false
98
+ t.datetime "created_at", null: false
99
+ t.datetime "updated_at", null: false
99
100
  t.index ["order"], name: "index_featured_works_on_order"
100
101
  t.index ["work_id"], name: "index_featured_works_on_work_id"
101
102
  end
102
103
 
103
104
  create_table "file_download_stats", force: :cascade do |t|
104
- t.datetime "date", precision: nil
105
+ t.datetime "date"
105
106
  t.integer "downloads"
106
107
  t.string "file_id"
107
- t.datetime "created_at", precision: nil, null: false
108
- t.datetime "updated_at", precision: nil, null: false
108
+ t.datetime "created_at", null: false
109
+ t.datetime "updated_at", null: false
109
110
  t.integer "user_id"
110
111
  t.index ["file_id"], name: "index_file_download_stats_on_file_id"
111
112
  t.index ["user_id"], name: "index_file_download_stats_on_user_id"
112
113
  end
113
114
 
114
115
  create_table "file_view_stats", force: :cascade do |t|
115
- t.datetime "date", precision: nil
116
+ t.datetime "date"
116
117
  t.integer "views"
117
118
  t.string "file_id"
118
- t.datetime "created_at", precision: nil, null: false
119
- t.datetime "updated_at", precision: nil, null: false
119
+ t.datetime "created_at", null: false
120
+ t.datetime "updated_at", null: false
120
121
  t.integer "user_id"
121
122
  t.index ["file_id"], name: "index_file_view_stats_on_file_id"
122
123
  t.index ["user_id"], name: "index_file_view_stats_on_user_id"
@@ -146,8 +147,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
146
147
  t.date "date"
147
148
  t.integer "total_item_investigations"
148
149
  t.integer "total_item_requests"
149
- t.datetime "created_at", precision: nil, null: false
150
- t.datetime "updated_at", precision: nil, null: false
150
+ t.datetime "created_at", null: false
151
+ t.datetime "updated_at", null: false
151
152
  t.string "title"
152
153
  t.integer "year_of_publication"
153
154
  t.string "publisher"
@@ -160,15 +161,15 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
160
161
 
161
162
  create_table "hyrax_default_administrative_set", force: :cascade do |t|
162
163
  t.string "default_admin_set_id", null: false
163
- t.datetime "created_at", precision: nil, null: false
164
- t.datetime "updated_at", precision: nil, null: false
164
+ t.datetime "created_at", null: false
165
+ t.datetime "updated_at", null: false
165
166
  end
166
167
 
167
168
  create_table "hyrax_features", force: :cascade do |t|
168
169
  t.string "key", null: false
169
170
  t.boolean "enabled", default: false, null: false
170
- t.datetime "created_at", precision: nil, null: false
171
- t.datetime "updated_at", precision: nil, null: false
171
+ t.datetime "created_at", null: false
172
+ t.datetime "updated_at", null: false
172
173
  end
173
174
 
174
175
  create_table "job_io_wrappers", force: :cascade do |t|
@@ -179,8 +180,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
179
180
  t.string "original_name"
180
181
  t.string "path"
181
182
  t.string "relation"
182
- t.datetime "created_at", precision: nil, null: false
183
- t.datetime "updated_at", precision: nil, null: false
183
+ t.datetime "created_at", null: false
184
+ t.datetime "updated_at", null: false
184
185
  t.index ["uploaded_file_id"], name: "index_job_io_wrappers_on_uploaded_file_id"
185
186
  t.index ["user_id"], name: "index_job_io_wrappers_on_user_id"
186
187
  end
@@ -195,8 +196,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
195
196
 
196
197
  create_table "mailboxer_conversations", id: :serial, force: :cascade do |t|
197
198
  t.string "subject", default: ""
198
- t.datetime "created_at", precision: nil, null: false
199
- t.datetime "updated_at", precision: nil, null: false
199
+ t.datetime "created_at", null: false
200
+ t.datetime "updated_at", null: false
200
201
  end
201
202
 
202
203
  create_table "mailboxer_notifications", id: :serial, force: :cascade do |t|
@@ -211,10 +212,10 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
211
212
  t.string "notified_object_type"
212
213
  t.integer "notified_object_id"
213
214
  t.string "attachment"
214
- t.datetime "updated_at", precision: nil, null: false
215
- t.datetime "created_at", precision: nil, null: false
215
+ t.datetime "updated_at", null: false
216
+ t.datetime "created_at", null: false
216
217
  t.boolean "global", default: false
217
- t.datetime "expires", precision: nil
218
+ t.datetime "expires"
218
219
  t.index ["conversation_id"], name: "index_mailboxer_notifications_on_conversation_id"
219
220
  t.index ["notified_object_id", "notified_object_type"], name: "index_mailboxer_notifications_on_notified_object_id_and_type"
220
221
  t.index ["notified_object_type", "notified_object_id"], name: "mailboxer_notifications_notified_object"
@@ -230,8 +231,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
230
231
  t.boolean "trashed", default: false
231
232
  t.boolean "deleted", default: false
232
233
  t.string "mailbox_type", limit: 25
233
- t.datetime "created_at", precision: nil, null: false
234
- t.datetime "updated_at", precision: nil, null: false
234
+ t.datetime "created_at", null: false
235
+ t.datetime "updated_at", null: false
235
236
  t.boolean "is_delivered", default: false
236
237
  t.string "delivery_method"
237
238
  t.string "message_id"
@@ -245,15 +246,15 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
245
246
  t.text "counters"
246
247
  t.bigint "seq", default: 0
247
248
  t.binary "rand"
248
- t.datetime "created_at", precision: nil, null: false
249
- t.datetime "updated_at", precision: nil, null: false
249
+ t.datetime "created_at", null: false
250
+ t.datetime "updated_at", null: false
250
251
  t.index ["namespace"], name: "index_minter_states_on_namespace", unique: true
251
252
  end
252
253
 
253
254
  create_table "orm_resources", id: :text, default: -> { "(uuid_generate_v4())::text" }, force: :cascade do |t|
254
255
  t.jsonb "metadata", default: {}, null: false
255
- t.datetime "created_at", precision: nil, null: false
256
- t.datetime "updated_at", precision: nil, null: false
256
+ t.datetime "created_at", null: false
257
+ t.datetime "updated_at", null: false
257
258
  t.string "internal_resource"
258
259
  t.integer "lock_version"
259
260
  t.index ["internal_resource"], name: "index_orm_resources_on_internal_resource"
@@ -267,8 +268,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
267
268
  t.string "agent_type"
268
269
  t.string "agent_id"
269
270
  t.string "access"
270
- t.datetime "created_at", precision: nil, null: false
271
- t.datetime "updated_at", precision: nil, null: false
271
+ t.datetime "created_at", null: false
272
+ t.datetime "updated_at", null: false
272
273
  t.index ["permission_template_id", "agent_id", "agent_type", "access"], name: "uk_permission_template_accesses", unique: true
273
274
  t.index ["permission_template_id"], name: "index_permission_template_accesses_on_permission_template_id"
274
275
  end
@@ -276,8 +277,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
276
277
  create_table "permission_templates", force: :cascade do |t|
277
278
  t.string "source_id"
278
279
  t.string "visibility"
279
- t.datetime "created_at", precision: nil, null: false
280
- t.datetime "updated_at", precision: nil, null: false
280
+ t.datetime "created_at", null: false
281
+ t.datetime "updated_at", null: false
281
282
  t.date "release_date"
282
283
  t.string "release_period"
283
284
  t.index ["source_id"], name: "index_permission_templates_on_source_id", unique: true
@@ -287,12 +288,12 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
287
288
  t.string "work_id", null: false
288
289
  t.bigint "sending_user_id", null: false
289
290
  t.bigint "receiving_user_id", null: false
290
- t.datetime "fulfillment_date", precision: nil
291
+ t.datetime "fulfillment_date"
291
292
  t.string "status", default: "pending", null: false
292
293
  t.text "sender_comment"
293
294
  t.text "receiver_comment"
294
- t.datetime "created_at", precision: nil, null: false
295
- t.datetime "updated_at", precision: nil, null: false
295
+ t.datetime "created_at", null: false
296
+ t.datetime "updated_at", null: false
296
297
  t.index ["receiving_user_id"], name: "index_proxy_deposit_requests_on_receiving_user_id"
297
298
  t.index ["sending_user_id"], name: "index_proxy_deposit_requests_on_sending_user_id"
298
299
  end
@@ -300,16 +301,16 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
300
301
  create_table "proxy_deposit_rights", force: :cascade do |t|
301
302
  t.bigint "grantor_id"
302
303
  t.bigint "grantee_id"
303
- t.datetime "created_at", precision: nil, null: false
304
- t.datetime "updated_at", precision: nil, null: false
304
+ t.datetime "created_at", null: false
305
+ t.datetime "updated_at", null: false
305
306
  t.index ["grantee_id"], name: "index_proxy_deposit_rights_on_grantee_id"
306
307
  t.index ["grantor_id"], name: "index_proxy_deposit_rights_on_grantor_id"
307
308
  end
308
309
 
309
310
  create_table "qa_local_authorities", force: :cascade do |t|
310
311
  t.string "name"
311
- t.datetime "created_at", precision: nil, null: false
312
- t.datetime "updated_at", precision: nil, null: false
312
+ t.datetime "created_at", null: false
313
+ t.datetime "updated_at", null: false
313
314
  t.index ["name"], name: "index_qa_local_authorities_on_name", unique: true
314
315
  end
315
316
 
@@ -317,18 +318,31 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
317
318
  t.bigint "local_authority_id"
318
319
  t.string "label"
319
320
  t.string "uri"
320
- t.datetime "created_at", precision: nil, null: false
321
- t.datetime "updated_at", precision: nil, null: false
321
+ t.datetime "created_at", null: false
322
+ t.datetime "updated_at", null: false
322
323
  t.index ["local_authority_id"], name: "index_qa_local_authority_entries_on_local_authority_id"
323
324
  t.index ["uri"], name: "index_qa_local_authority_entries_on_uri", unique: true
324
325
  end
325
326
 
327
+ create_table "roles", id: :serial, force: :cascade do |t|
328
+ t.string "name"
329
+ end
330
+
331
+ create_table "roles_users", id: false, force: :cascade do |t|
332
+ t.integer "role_id"
333
+ t.integer "user_id"
334
+ t.index ["role_id", "user_id"], name: "index_roles_users_on_role_id_and_user_id"
335
+ t.index ["role_id"], name: "index_roles_users_on_role_id"
336
+ t.index ["user_id", "role_id"], name: "index_roles_users_on_user_id_and_role_id"
337
+ t.index ["user_id"], name: "index_roles_users_on_user_id"
338
+ end
339
+
326
340
  create_table "searches", id: :serial, force: :cascade do |t|
327
341
  t.binary "query_params"
328
342
  t.integer "user_id"
329
343
  t.string "user_type"
330
- t.datetime "created_at", precision: nil, null: false
331
- t.datetime "updated_at", precision: nil, null: false
344
+ t.datetime "created_at", null: false
345
+ t.datetime "updated_at", null: false
332
346
  t.index ["user_id"], name: "index_searches_on_user_id"
333
347
  end
334
348
 
@@ -336,16 +350,16 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
336
350
  t.string "download_key"
337
351
  t.string "path"
338
352
  t.string "item_id"
339
- t.datetime "expires", precision: nil
340
- t.datetime "created_at", precision: nil, null: false
341
- t.datetime "updated_at", precision: nil, null: false
353
+ t.datetime "expires"
354
+ t.datetime "created_at", null: false
355
+ t.datetime "updated_at", null: false
342
356
  end
343
357
 
344
358
  create_table "sipity_agents", force: :cascade do |t|
345
359
  t.string "proxy_for_id", null: false
346
360
  t.string "proxy_for_type", null: false
347
- t.datetime "created_at", precision: nil, null: false
348
- t.datetime "updated_at", precision: nil, null: false
361
+ t.datetime "created_at", null: false
362
+ t.datetime "updated_at", null: false
349
363
  t.index ["proxy_for_id", "proxy_for_type"], name: "sipity_agents_proxy_for", unique: true
350
364
  end
351
365
 
@@ -353,8 +367,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
353
367
  t.integer "entity_id", null: false
354
368
  t.integer "agent_id", null: false
355
369
  t.text "comment"
356
- t.datetime "created_at", precision: nil, null: false
357
- t.datetime "updated_at", precision: nil, null: false
370
+ t.datetime "created_at", null: false
371
+ t.datetime "updated_at", null: false
358
372
  t.index ["agent_id"], name: "index_sipity_comments_on_agent_id"
359
373
  t.index ["created_at"], name: "index_sipity_comments_on_created_at"
360
374
  t.index ["entity_id"], name: "index_sipity_comments_on_entity_id"
@@ -364,8 +378,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
364
378
  t.string "proxy_for_global_id", null: false
365
379
  t.integer "workflow_id", null: false
366
380
  t.integer "workflow_state_id"
367
- t.datetime "created_at", precision: nil, null: false
368
- t.datetime "updated_at", precision: nil, null: false
381
+ t.datetime "created_at", null: false
382
+ t.datetime "updated_at", null: false
369
383
  t.index ["proxy_for_global_id"], name: "sipity_entities_proxy_for_global_id", unique: true
370
384
  t.index ["workflow_id"], name: "index_sipity_entities_on_workflow_id"
371
385
  t.index ["workflow_state_id"], name: "index_sipity_entities_on_workflow_state_id"
@@ -375,8 +389,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
375
389
  t.integer "workflow_role_id", null: false
376
390
  t.integer "entity_id", null: false
377
391
  t.integer "agent_id", null: false
378
- t.datetime "created_at", precision: nil, null: false
379
- t.datetime "updated_at", precision: nil, null: false
392
+ t.datetime "created_at", null: false
393
+ t.datetime "updated_at", null: false
380
394
  t.index ["agent_id"], name: "sipity_entity_specific_responsibilities_agent"
381
395
  t.index ["entity_id"], name: "sipity_entity_specific_responsibilities_entity"
382
396
  t.index ["workflow_role_id", "entity_id", "agent_id"], name: "sipity_entity_specific_responsibilities_aggregate", unique: true
@@ -388,8 +402,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
388
402
  t.string "scope_for_notification_type", null: false
389
403
  t.string "reason_for_notification", null: false
390
404
  t.integer "notification_id", null: false
391
- t.datetime "created_at", precision: nil, null: false
392
- t.datetime "updated_at", precision: nil, null: false
405
+ t.datetime "created_at", null: false
406
+ t.datetime "updated_at", null: false
393
407
  t.index ["notification_id"], name: "sipity_notifiable_contexts_notification_id"
394
408
  t.index ["scope_for_notification_id", "scope_for_notification_type", "reason_for_notification", "notification_id"], name: "sipity_notifiable_contexts_concern_surrogate", unique: true
395
409
  t.index ["scope_for_notification_id", "scope_for_notification_type", "reason_for_notification"], name: "sipity_notifiable_contexts_concern_context"
@@ -400,8 +414,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
400
414
  t.integer "notification_id", null: false
401
415
  t.integer "role_id", null: false
402
416
  t.string "recipient_strategy", null: false
403
- t.datetime "created_at", precision: nil, null: false
404
- t.datetime "updated_at", precision: nil, null: false
417
+ t.datetime "created_at", null: false
418
+ t.datetime "updated_at", null: false
405
419
  t.index ["notification_id", "role_id", "recipient_strategy"], name: "sipity_notifications_recipients_surrogate"
406
420
  t.index ["notification_id"], name: "sipity_notification_recipients_notification"
407
421
  t.index ["recipient_strategy"], name: "sipity_notification_recipients_recipient_strategy"
@@ -411,8 +425,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
411
425
  create_table "sipity_notifications", force: :cascade do |t|
412
426
  t.string "name", null: false
413
427
  t.string "notification_type", null: false
414
- t.datetime "created_at", precision: nil, null: false
415
- t.datetime "updated_at", precision: nil, null: false
428
+ t.datetime "created_at", null: false
429
+ t.datetime "updated_at", null: false
416
430
  t.index ["name"], name: "index_sipity_notifications_on_name", unique: true
417
431
  t.index ["notification_type"], name: "index_sipity_notifications_on_notification_type"
418
432
  end
@@ -420,8 +434,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
420
434
  create_table "sipity_roles", force: :cascade do |t|
421
435
  t.string "name", null: false
422
436
  t.text "description"
423
- t.datetime "created_at", precision: nil, null: false
424
- t.datetime "updated_at", precision: nil, null: false
437
+ t.datetime "created_at", null: false
438
+ t.datetime "updated_at", null: false
425
439
  t.index ["name"], name: "index_sipity_roles_on_name", unique: true
426
440
  end
427
441
 
@@ -429,8 +443,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
429
443
  t.integer "workflow_id", null: false
430
444
  t.integer "resulting_workflow_state_id"
431
445
  t.string "name", null: false
432
- t.datetime "created_at", precision: nil, null: false
433
- t.datetime "updated_at", precision: nil, null: false
446
+ t.datetime "created_at", null: false
447
+ t.datetime "updated_at", null: false
434
448
  t.index ["resulting_workflow_state_id"], name: "sipity_workflow_actions_resulting_workflow_state"
435
449
  t.index ["workflow_id", "name"], name: "sipity_workflow_actions_aggregate", unique: true
436
450
  t.index ["workflow_id"], name: "sipity_workflow_actions_workflow"
@@ -440,48 +454,48 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
440
454
  t.string "service_name", null: false
441
455
  t.integer "weight", null: false
442
456
  t.integer "workflow_action_id", null: false
443
- t.datetime "created_at", precision: nil, null: false
444
- t.datetime "updated_at", precision: nil, null: false
457
+ t.datetime "created_at", null: false
458
+ t.datetime "updated_at", null: false
445
459
  t.index ["workflow_action_id"], name: "index_sipity_workflow_methods_on_workflow_action_id"
446
460
  end
447
461
 
448
462
  create_table "sipity_workflow_responsibilities", force: :cascade do |t|
449
463
  t.integer "agent_id", null: false
450
464
  t.integer "workflow_role_id", null: false
451
- t.datetime "created_at", precision: nil, null: false
452
- t.datetime "updated_at", precision: nil, null: false
465
+ t.datetime "created_at", null: false
466
+ t.datetime "updated_at", null: false
453
467
  t.index ["agent_id", "workflow_role_id"], name: "sipity_workflow_responsibilities_aggregate", unique: true
454
468
  end
455
469
 
456
470
  create_table "sipity_workflow_roles", force: :cascade do |t|
457
471
  t.integer "workflow_id", null: false
458
472
  t.integer "role_id", null: false
459
- t.datetime "created_at", precision: nil, null: false
460
- t.datetime "updated_at", precision: nil, null: false
473
+ t.datetime "created_at", null: false
474
+ t.datetime "updated_at", null: false
461
475
  t.index ["workflow_id", "role_id"], name: "sipity_workflow_roles_aggregate", unique: true
462
476
  end
463
477
 
464
478
  create_table "sipity_workflow_state_action_permissions", force: :cascade do |t|
465
479
  t.integer "workflow_role_id", null: false
466
480
  t.integer "workflow_state_action_id", null: false
467
- t.datetime "created_at", precision: nil, null: false
468
- t.datetime "updated_at", precision: nil, null: false
481
+ t.datetime "created_at", null: false
482
+ t.datetime "updated_at", null: false
469
483
  t.index ["workflow_role_id", "workflow_state_action_id"], name: "sipity_workflow_state_action_permissions_aggregate", unique: true
470
484
  end
471
485
 
472
486
  create_table "sipity_workflow_state_actions", force: :cascade do |t|
473
487
  t.integer "originating_workflow_state_id", null: false
474
488
  t.integer "workflow_action_id", null: false
475
- t.datetime "created_at", precision: nil, null: false
476
- t.datetime "updated_at", precision: nil, null: false
489
+ t.datetime "created_at", null: false
490
+ t.datetime "updated_at", null: false
477
491
  t.index ["originating_workflow_state_id", "workflow_action_id"], name: "sipity_workflow_state_actions_aggregate", unique: true
478
492
  end
479
493
 
480
494
  create_table "sipity_workflow_states", force: :cascade do |t|
481
495
  t.integer "workflow_id", null: false
482
496
  t.string "name", null: false
483
- t.datetime "created_at", precision: nil, null: false
484
- t.datetime "updated_at", precision: nil, null: false
497
+ t.datetime "created_at", null: false
498
+ t.datetime "updated_at", null: false
485
499
  t.index ["name"], name: "index_sipity_workflow_states_on_name"
486
500
  t.index ["workflow_id", "name"], name: "sipity_type_state_aggregate", unique: true
487
501
  end
@@ -490,8 +504,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
490
504
  t.string "name", null: false
491
505
  t.string "label"
492
506
  t.text "description"
493
- t.datetime "created_at", precision: nil, null: false
494
- t.datetime "updated_at", precision: nil, null: false
507
+ t.datetime "created_at", null: false
508
+ t.datetime "updated_at", null: false
495
509
  t.integer "permission_template_id"
496
510
  t.boolean "active"
497
511
  t.boolean "allows_access_grant"
@@ -500,34 +514,34 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
500
514
 
501
515
  create_table "tinymce_assets", force: :cascade do |t|
502
516
  t.string "file"
503
- t.datetime "created_at", precision: nil, null: false
504
- t.datetime "updated_at", precision: nil, null: false
517
+ t.datetime "created_at", null: false
518
+ t.datetime "updated_at", null: false
505
519
  end
506
520
 
507
521
  create_table "trophies", force: :cascade do |t|
508
522
  t.integer "user_id"
509
523
  t.string "work_id"
510
- t.datetime "created_at", precision: nil, null: false
511
- t.datetime "updated_at", precision: nil, null: false
524
+ t.datetime "created_at", null: false
525
+ t.datetime "updated_at", null: false
512
526
  end
513
527
 
514
528
  create_table "uploaded_files", force: :cascade do |t|
515
529
  t.string "file"
516
530
  t.bigint "user_id"
517
531
  t.string "file_set_uri"
518
- t.datetime "created_at", precision: nil, null: false
519
- t.datetime "updated_at", precision: nil, null: false
532
+ t.datetime "created_at", null: false
533
+ t.datetime "updated_at", null: false
520
534
  t.index ["file_set_uri"], name: "index_uploaded_files_on_file_set_uri"
521
535
  t.index ["user_id"], name: "index_uploaded_files_on_user_id"
522
536
  end
523
537
 
524
538
  create_table "user_stats", force: :cascade do |t|
525
539
  t.integer "user_id"
526
- t.datetime "date", precision: nil
540
+ t.datetime "date"
527
541
  t.integer "file_views"
528
542
  t.integer "file_downloads"
529
- t.datetime "created_at", precision: nil, null: false
530
- t.datetime "updated_at", precision: nil, null: false
543
+ t.datetime "created_at", null: false
544
+ t.datetime "updated_at", null: false
531
545
  t.integer "work_views"
532
546
  t.index ["user_id"], name: "index_user_stats_on_user_id"
533
547
  end
@@ -536,10 +550,10 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
536
550
  t.string "email", default: "", null: false
537
551
  t.string "encrypted_password", default: "", null: false
538
552
  t.string "reset_password_token"
539
- t.datetime "reset_password_sent_at", precision: nil
540
- t.datetime "remember_created_at", precision: nil
541
- t.datetime "created_at", precision: nil, null: false
542
- t.datetime "updated_at", precision: nil, null: false
553
+ t.datetime "reset_password_sent_at"
554
+ t.datetime "remember_created_at"
555
+ t.datetime "created_at", null: false
556
+ t.datetime "updated_at", null: false
543
557
  t.boolean "guest", default: false
544
558
  t.string "facebook_handle"
545
559
  t.string "twitter_handle"
@@ -557,7 +571,7 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
557
571
  t.string "avatar_file_name"
558
572
  t.string "avatar_content_type"
559
573
  t.integer "avatar_file_size"
560
- t.datetime "avatar_updated_at", precision: nil
574
+ t.datetime "avatar_updated_at"
561
575
  t.string "linkedin_handle"
562
576
  t.string "orcid"
563
577
  t.string "arkivo_token"
@@ -574,16 +588,16 @@ ActiveRecord::Schema[7.2].define(version: 2024_05_06_070809) do
574
588
  t.string "datastream_id"
575
589
  t.string "version_id"
576
590
  t.string "committer_login"
577
- t.datetime "created_at", precision: nil, null: false
578
- t.datetime "updated_at", precision: nil, null: false
591
+ t.datetime "created_at", null: false
592
+ t.datetime "updated_at", null: false
579
593
  end
580
594
 
581
595
  create_table "work_view_stats", force: :cascade do |t|
582
- t.datetime "date", precision: nil
596
+ t.datetime "date"
583
597
  t.integer "work_views"
584
598
  t.string "work_id"
585
- t.datetime "created_at", precision: nil, null: false
586
- t.datetime "updated_at", precision: nil, null: false
599
+ t.datetime "created_at", null: false
600
+ t.datetime "updated_at", null: false
587
601
  t.integer "user_id"
588
602
  t.index ["user_id"], name: "index_work_view_stats_on_user_id"
589
603
  t.index ["work_id"], name: "index_work_view_stats_on_work_id"
@@ -17,6 +17,7 @@ on:
17
17
 
18
18
  env:
19
19
  REGISTRY: ghcr.io
20
+ IMAGE_NAME: ${{ github.repository }}-dev
20
21
  DOCKER_BUILDKIT: 1
21
22
  COMPOSE_DOCKER_CLI_BUILD: 1
22
23
 
@@ -47,22 +48,50 @@ jobs:
47
48
  steps:
48
49
  - name: Checkout
49
50
  uses: actions/checkout@v4
51
+ - name: Auth to ghcr.io
52
+ uses: docker/login-action@v3
53
+ with:
54
+ registry: ${{ env.REGISTRY }}
55
+ username: ${{ github.actor }}
56
+ password: ${{ secrets.GITHUB_TOKEN }}
50
57
  - name: Set up Docker Buildx
51
58
  uses: docker/setup-buildx-action@v3
59
+ - name: Setup image tags
60
+ id: image-meta
61
+ uses: docker/metadata-action@v5
62
+ with:
63
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
64
+ tags: |
65
+ type=raw,value=latest,enable={{is_default_branch}}
66
+ type=ref,event=pr
67
+ type=sha,format=long,prefix=
52
68
  - name: Build and export
53
69
  uses: docker/build-push-action@v6
54
70
  with:
71
+ build-args: |
72
+ BUILD_TIMESTAMP=${{ fromJSON(steps.image-meta.outputs.json).labels['org.opencontainers.image.created'] }}
73
+ BUILD_GITSHA=${{ github.sha }}
55
74
  cache-from: type=gha
56
75
  cache-to: type=gha, mode=max
57
76
  context: .
58
77
  target: hyrax-engine-dev
59
- tags: samvera/hyrax-dev:latest,samvera/hyrax-dev:${{ github.sha }}
60
- outputs: type=docker,dest=/tmp/hyrax-dev-${{ github.sha }}.tar
78
+ push: true # ${{ github.event_name != 'pull_request' }}
79
+ tags: ${{ steps.image-meta.outputs.tags }}
80
+ labels: ${{ steps.image-meta.outputs.labels }}
81
+ outputs: type=docker,dest=${{runner.temp}}/hyrax-dev-${{ github.sha }}.tar
82
+ - name: Trigger Nurax Deployment
83
+ uses: peter-evans/repository-dispatch@v3
84
+ if: ${{ github.ref == 'refs/heads/main' }}
85
+ with:
86
+ token: ${{ secrets.NURAX_ACCESS_TOKEN }}
87
+ event-type: deploy
88
+ repository: samvera-labs/nurax-terraform
89
+ client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
61
90
  - name: Upload built image artifact
62
91
  uses: actions/upload-artifact@v4
63
92
  with:
64
93
  name: hyrax-dev
65
- path: /tmp/hyrax-dev-${{ github.sha }}.tar
94
+ path: ${{runner.temp}}/hyrax-dev-${{ github.sha }}.tar
66
95
 
67
96
  test:
68
97
  needs: build
@@ -86,10 +115,10 @@ jobs:
86
115
  uses: actions/download-artifact@v4
87
116
  with:
88
117
  name: hyrax-dev
89
- path: /tmp
118
+ path: ${{runner.temp}}
90
119
  - name: Start containers
91
120
  run: |
92
- docker load --input /tmp/hyrax-dev-${{ github.sha }}.tar
121
+ docker load --input ${{runner.temp}}/hyrax-dev-${{ github.sha }}.tar
93
122
  docker image ls -a
94
123
  docker compose -f docker-compose-${{ matrix.ci_test_app }}.yml up -d --quiet-pull --pull missing --no-build
95
124
  - name: RSpec
data/.koppie/.env CHANGED
@@ -11,7 +11,7 @@ DB_NAME=koppie
11
11
  DB_PASSWORD=hyrax_password
12
12
  DB_PORT=5432
13
13
  DB_USERNAME=hyrax_user
14
- FCREPO_URL=http://fedoraAdmin:fedoraAdmin@fcrepo:8080/fcrepo/rest
14
+ FEDORA_URL=http://fedoraAdmin:fedoraAdmin@fcrepo:8080/fcrepo/rest
15
15
  FITS_SERVLET_URL=http://fits:8080/fits
16
16
  HUB_URL=http://chrome:4444/wd/hub
17
17
  HYRAX_DERIVATIVES_PATH=/app/samvera/hyrax-webapp/derivatives/