spina-admin-conferences-fork 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +100 -0
- data/Rakefile +40 -0
- data/app/assets/config/spina_admin_conferences_manifest.js +3 -0
- data/app/assets/javascripts/controllers/spina/admin/conferences/conference_events_form_controller.js +174 -0
- data/app/assets/javascripts/controllers/spina/admin/conferences/presentation_attachments_form_controller.js +174 -0
- data/app/assets/javascripts/controllers/spina/admin/conferences/select_options_controller.js +215 -0
- data/app/assets/javascripts/importmap.json.erb +6 -0
- data/app/assets/javascripts/spina/admin/conferences/application.js +4 -0
- data/app/assets/stylesheets/spina/admin/conferences/application.sass +3 -0
- data/app/controllers/spina/admin/conferences/application_controller.rb +23 -0
- data/app/controllers/spina/admin/conferences/conferences_controller.rb +139 -0
- data/app/controllers/spina/admin/conferences/delegates_controller.rb +114 -0
- data/app/controllers/spina/admin/conferences/dietary_requirements_controller.rb +106 -0
- data/app/controllers/spina/admin/conferences/events_controller.rb +24 -0
- data/app/controllers/spina/admin/conferences/institutions_controller.rb +106 -0
- data/app/controllers/spina/admin/conferences/presentation_attachment_types_controller.rb +104 -0
- data/app/controllers/spina/admin/conferences/presentation_attachments_controller.rb +24 -0
- data/app/controllers/spina/admin/conferences/presentation_types_controller.rb +109 -0
- data/app/controllers/spina/admin/conferences/presentations_controller.rb +123 -0
- data/app/controllers/spina/admin/conferences/rooms_controller.rb +109 -0
- data/app/controllers/spina/admin/conferences/sessions_controller.rb +118 -0
- data/app/jobs/spina/admin/conferences/application_job.rb +11 -0
- data/app/jobs/spina/admin/conferences/delegate_import_job.rb +37 -0
- data/app/jobs/spina/admin/conferences/import_job.rb +26 -0
- data/app/jobs/spina/admin/conferences/presentation_import_job.rb +37 -0
- data/app/mailers/spina/admin/conferences/application_mailer.rb +13 -0
- data/app/models/spina/admin/conferences/application_record.rb +14 -0
- data/app/models/spina/admin/conferences/conference.rb +269 -0
- data/app/models/spina/admin/conferences/delegate.rb +89 -0
- data/app/models/spina/admin/conferences/dietary_requirement.rb +33 -0
- data/app/models/spina/admin/conferences/event.rb +85 -0
- data/app/models/spina/admin/conferences/institution.rb +46 -0
- data/app/models/spina/admin/conferences/presentation.rb +134 -0
- data/app/models/spina/admin/conferences/presentation_attachment.rb +27 -0
- data/app/models/spina/admin/conferences/presentation_attachment_type.rb +35 -0
- data/app/models/spina/admin/conferences/presentation_type.rb +60 -0
- data/app/models/spina/admin/conferences/room.rb +52 -0
- data/app/models/spina/admin/conferences/session.rb +56 -0
- data/app/models/spina/admin/conferences.rb +11 -0
- data/app/models/spina/parts/admin/conferences/date.rb +14 -0
- data/app/models/spina/parts/admin/conferences/email_address.rb +20 -0
- data/app/models/spina/parts/admin/conferences/time.rb +14 -0
- data/app/models/spina/parts/admin/conferences/url.rb +20 -0
- data/app/validators/spina/admin/conferences/conference_date_validator.rb +20 -0
- data/app/validators/spina/admin/conferences/email_address_validator.rb +28 -0
- data/app/validators/spina/admin/conferences/finish_date_validator.rb +20 -0
- data/app/validators/spina/admin/conferences/finish_time_validator.rb +20 -0
- data/app/validators/spina/admin/conferences/http_url_validator.rb +28 -0
- data/app/views/layouts/spina/admin/conferences/application.html.haml +6 -0
- data/app/views/layouts/spina/admin/conferences/conferences.html.haml +17 -0
- data/app/views/layouts/spina/admin/conferences/delegates.html.haml +8 -0
- data/app/views/layouts/spina/admin/conferences/dietary_requirements.html.haml +8 -0
- data/app/views/layouts/spina/admin/conferences/institutions.html.haml +15 -0
- data/app/views/layouts/spina/admin/conferences/presentation_attachment_types.html.haml +8 -0
- data/app/views/layouts/spina/admin/conferences/presentations.html.haml +8 -0
- data/app/views/spina/admin/conferences/application/_conferences.html.haml +12 -0
- data/app/views/spina/admin/conferences/application/_delegates.html.haml +11 -0
- data/app/views/spina/admin/conferences/application/_dietary_requirements.html.haml +9 -0
- data/app/views/spina/admin/conferences/application/_empty_list.html.haml +3 -0
- data/app/views/spina/admin/conferences/application/_errors.html.haml +11 -0
- data/app/views/spina/admin/conferences/application/_errors.turbo_stream.haml +1 -0
- data/app/views/spina/admin/conferences/application/_institutions.html.haml +10 -0
- data/app/views/spina/admin/conferences/application/_presentation_attachment_types.html.haml +10 -0
- data/app/views/spina/admin/conferences/application/_presentation_types.html.haml +11 -0
- data/app/views/spina/admin/conferences/application/_presentations.html.haml +11 -0
- data/app/views/spina/admin/conferences/application/_rooms.html.haml +11 -0
- data/app/views/spina/admin/conferences/application/_sessions.html.haml +11 -0
- data/app/views/spina/admin/conferences/conferences/_conference.html.haml +9 -0
- data/app/views/spina/admin/conferences/conferences/_event_fields.html.haml +31 -0
- data/app/views/spina/admin/conferences/conferences/_event_row.html.haml +5 -0
- data/app/views/spina/admin/conferences/conferences/_form.html.haml +27 -0
- data/app/views/spina/admin/conferences/conferences/_form_conference_details.html.haml +27 -0
- data/app/views/spina/admin/conferences/conferences/_form_parts.html.haml +8 -0
- data/app/views/spina/admin/conferences/conferences/_form_structure.html.haml +19 -0
- data/app/views/spina/admin/conferences/conferences/_form_structure_item.html.haml +13 -0
- data/app/views/spina/admin/conferences/conferences/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/conferences/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/conferences/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/delegates/_delegate.html.haml +13 -0
- data/app/views/spina/admin/conferences/delegates/_form.html.haml +24 -0
- data/app/views/spina/admin/conferences/delegates/_form_delegate_details.html.haml +53 -0
- data/app/views/spina/admin/conferences/delegates/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/delegates/index.html.haml +13 -0
- data/app/views/spina/admin/conferences/delegates/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/dietary_requirements/_dietary_requirement.html.haml +6 -0
- data/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml +23 -0
- data/app/views/spina/admin/conferences/dietary_requirements/_form_dietary_requirement_details.html.haml +8 -0
- data/app/views/spina/admin/conferences/dietary_requirements/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/dietary_requirements/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/dietary_requirements/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/events/new.js.erb +21 -0
- data/app/views/spina/admin/conferences/institutions/_form.html.haml +24 -0
- data/app/views/spina/admin/conferences/institutions/_form_institution_details.html.haml +29 -0
- data/app/views/spina/admin/conferences/institutions/_institution.html.haml +7 -0
- data/app/views/spina/admin/conferences/institutions/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/institutions/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/institutions/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml +23 -0
- data/app/views/spina/admin/conferences/presentation_attachment_types/_presentation_attachment_type.html.haml +6 -0
- data/app/views/spina/admin/conferences/presentation_attachment_types/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/presentation_attachment_types/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/presentation_attachment_types/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/presentation_attachments/new.js.erb +21 -0
- data/app/views/spina/admin/conferences/presentation_types/_form.html.haml +24 -0
- data/app/views/spina/admin/conferences/presentation_types/_form_presentation_type_details.html.haml +16 -0
- data/app/views/spina/admin/conferences/presentation_types/_presentation_type.html.haml +8 -0
- data/app/views/spina/admin/conferences/presentation_types/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/presentation_types/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/presentation_types/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/presentations/_attachment_fields.html.haml +18 -0
- data/app/views/spina/admin/conferences/presentations/_attachment_row.html.haml +2 -0
- data/app/views/spina/admin/conferences/presentations/_form.html.haml +23 -0
- data/app/views/spina/admin/conferences/presentations/_form_presentation_details.html.haml +55 -0
- data/app/views/spina/admin/conferences/presentations/_presentation.html.haml +11 -0
- data/app/views/spina/admin/conferences/presentations/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/presentations/index.html.haml +13 -0
- data/app/views/spina/admin/conferences/presentations/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/rooms/_form.html.haml +23 -0
- data/app/views/spina/admin/conferences/rooms/_form_room_details.html.haml +16 -0
- data/app/views/spina/admin/conferences/rooms/_room.html.haml +8 -0
- data/app/views/spina/admin/conferences/rooms/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/rooms/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/rooms/new.html.haml +1 -0
- data/app/views/spina/admin/conferences/sessions/_form.html.haml +23 -0
- data/app/views/spina/admin/conferences/sessions/_form_session_details.html.haml +21 -0
- data/app/views/spina/admin/conferences/sessions/_session.html.haml +8 -0
- data/app/views/spina/admin/conferences/sessions/edit.html.haml +1 -0
- data/app/views/spina/admin/conferences/sessions/index.html.haml +7 -0
- data/app/views/spina/admin/conferences/sessions/new.html.haml +1 -0
- data/app/views/spina/admin/hooks/conferences/_head.html.haml +7 -0
- data/app/views/spina/admin/hooks/conferences/_primary_navigation.html.haml +21 -0
- data/app/views/spina/admin/hooks/conferences/_settings_secondary_navigation.html.haml +6 -0
- data/app/views/spina/admin/parts/admin/conferences/dates/_form.html.haml +2 -0
- data/app/views/spina/admin/parts/admin/conferences/email_addresses/_form.html.haml +2 -0
- data/app/views/spina/admin/parts/admin/conferences/times/_form.html.haml +2 -0
- data/app/views/spina/admin/parts/admin/conferences/urls/_form.html.haml +2 -0
- data/config/initializers/assets.rb +13 -0
- data/config/locales/en.yml +351 -0
- data/config/routes.rb +27 -0
- data/db/migrate/20180907141228_create_spina_dates.rb +11 -0
- data/db/migrate/20180907141229_create_spina_email_addresses.rb +11 -0
- data/db/migrate/20180907141230_create_spina_urls.rb +11 -0
- data/db/migrate/20180907141231_create_spina_conferences_institutions.rb +12 -0
- data/db/migrate/20180907141232_create_spina_conferences_delegates.rb +15 -0
- data/db/migrate/20180907141234_create_spina_conferences_dietary_requirements.rb +11 -0
- data/db/migrate/20180907141235_create_spina_conferences_conferences.rb +12 -0
- data/db/migrate/20180907141236_create_spina_conferences_presentation_types.rb +13 -0
- data/db/migrate/20180907141238_create_join_table_spina_conferences_conference_delegate.rb +7 -0
- data/db/migrate/20180907141239_create_join_table_spina_conferences_delegate_presentation.rb +7 -0
- data/db/migrate/20180907141240_create_join_table_spina_conferences_delegate_dietary_requirement.rb +7 -0
- data/db/migrate/20180907141242_add_type_to_spina_pages.rb +7 -0
- data/db/migrate/20180907141243_create_spina_conferences_conference_page_parts.rb +14 -0
- data/db/migrate/20180914121905_add_logo_ref_to_spina_conferences_institutions.rb +7 -0
- data/db/migrate/20180916135431_create_spina_conferences_rooms.rb +13 -0
- data/db/migrate/20180916135432_create_spina_conferences_room_possessions.rb +10 -0
- data/db/migrate/20180916135433_create_spina_conferences_room_uses.rb +10 -0
- data/db/migrate/20180916135434_create_spina_conferences_presentations.rb +15 -0
- data/db/migrate/20181009122503_create_spina_times.rb +11 -0
- data/db/migrate/20181009130631_rename_spina_page_parts.rb +10 -0
- data/db/migrate/20181012190811_rename_spina_conferences_page_parts.rb +10 -0
- data/db/migrate/20181012213049_change_start_time_in_spina_conferences_conferences.rb +15 -0
- data/db/migrate/20181012214813_rename_start_time_in_spina_conferences_conferences.rb +7 -0
- data/db/migrate/20181017155705_add_dependent_option_to_foreign_keys.rb +36 -0
- data/db/migrate/20190408131354_change_spina_resources.rb +56 -0
- data/db/migrate/20190622131423_create_spina_conferences_parts.rb +12 -0
- data/db/migrate/20190701174807_remove_spina_conference_pages.rb +199 -0
- data/db/migrate/20190704135524_add_constraints_to_columns.rb +24 -0
- data/db/migrate/20200126034441_create_spina_conferences_presentation_attachment_types.rb +11 -0
- data/db/migrate/20200126213718_create_spina_conferences_presentation_attachments.rb +19 -0
- data/db/migrate/20200420104603_create_spina_conferences_dietary_requirement_name_translations.rb +19 -0
- data/db/migrate/20200420104740_create_spina_conferences_institution_name_and_city_translations.rb +20 -0
- data/db/migrate/20200420105057_create_spina_conferences_presentation_title_and_abstract_translations.rb +20 -0
- data/db/migrate/20200420105144_create_spina_conferences_presentation_attachment_type_name_translations.rb +20 -0
- data/db/migrate/20200420105201_create_spina_conferences_presentation_type_name_translations.rb +19 -0
- data/db/migrate/20200420105458_create_spina_conferences_room_building_and_number_translations.rb +20 -0
- data/db/migrate/20200420110407_move_attributes_to_translation_tables.rb +161 -0
- data/db/migrate/20200420120706_remove_name_from_spina_conferences_dietary_requirements.rb +7 -0
- data/db/migrate/20200420120759_remove_name_and_city_from_spina_conferences_institutions.rb +8 -0
- data/db/migrate/20200420120946_remove_title_and_abstract_from_spina_conferences_presentations.rb +8 -0
- data/db/migrate/20200420121310_remove_name_from_spina_conferences_presentation_attachment_types.rb +7 -0
- data/db/migrate/20200420121321_remove_name_from_spina_conferences_presentation_types.rb +7 -0
- data/db/migrate/20200420121443_remove_building_and_number_from_spina_conferences_rooms.rb +8 -0
- data/db/migrate/20200502133408_create_spina_conferences_conference_name_translations.rb +19 -0
- data/db/migrate/20200502183409_set_name_for_spina_conferences_conferences.rb +47 -0
- data/db/migrate/20200502183410_remove_institution_from_spina_conferences_conferences.rb +8 -0
- data/db/migrate/20200502183719_remove_spina_conferences_room_possessions.rb +60 -0
- data/db/migrate/20200503230732_rename_spina_conferences_room_uses.rb +8 -0
- data/db/migrate/20200510125131_create_spina_conferences_session_name_translations.rb +19 -0
- data/db/migrate/20200802165242_create_spina_conferences_events.rb +13 -0
- data/db/migrate/20200802184921_create_spina_conferences_event_name_description_and_location_translations.rb +21 -0
- data/db/migrate/20200911161632_update_spina_conferences_parts.rb +23 -0
- data/db/migrate/20200911161651_update_spina_parts.rb +37 -0
- data/db/migrate/20200911161726_move_presentation_parts.rb +101 -0
- data/db/migrate/20200911161739_move_conference_parts.rb +221 -0
- data/db/migrate/20201002122517_remove_spina_conferences_conference_page_parts.rb +14 -0
- data/db/migrate/20201007125625_add_timestamps_to_spina_conferences_parts.rb +10 -0
- data/db/migrate/20210315164409_add_json_attributes_to_spina_conferences_presentations.rb +7 -0
- data/db/migrate/20210315164410_add_json_attributes_to_spina_conferences_conferences.rb +7 -0
- data/db/migrate/20210315164411_convert_partables_to_json.rb +407 -0
- data/db/migrate/20210417102513_add_locale_to_action_text_rich_texts.rb +11 -0
- data/db/migrate/20210417102514_move_texts_to_action_text_rich_texts.rb +82 -0
- data/lib/spina/admin/conferences/engine.rb +31 -0
- data/lib/spina/admin/conferences/migration/renaming.rb +79 -0
- data/lib/spina/admin/conferences/railtie.rb +34 -0
- data/lib/spina/admin/conferences/version.rb +10 -0
- data/lib/spina/admin/conferences.rb +23 -0
- data/lib/tasks/spina/admin/conferences_tasks.rake +14 -0
- metadata +603 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class AddDependentOptionToForeignKeys < ActiveRecord::Migration[5.2] # :nodoc:
|
4
|
+
def change # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
5
|
+
remove_foreign_key :spina_conferences_delegates, :spina_conferences_institutions, column: :institution_id
|
6
|
+
remove_foreign_key :spina_conferences_presentations, :spina_conferences_room_uses, column: :room_use_id
|
7
|
+
remove_foreign_key :spina_conferences_room_uses, :spina_conferences_room_possessions, column: :room_possession_id
|
8
|
+
remove_foreign_key :spina_conferences_room_uses, :spina_conferences_presentation_types, column: :presentation_type_id
|
9
|
+
remove_foreign_key :spina_conferences_room_possessions, :spina_conferences_rooms, column: :room_id
|
10
|
+
remove_foreign_key :spina_conferences_room_possessions, :spina_conferences_conferences, column: :conference_id
|
11
|
+
remove_foreign_key :spina_conferences_rooms, :spina_conferences_institutions, column: :institution_id
|
12
|
+
remove_foreign_key :spina_conferences_institutions, :spina_images, column: :logo_id
|
13
|
+
remove_foreign_key :spina_conferences_presentation_types, :spina_conferences_conferences, column: :conference_id
|
14
|
+
remove_foreign_key :spina_conferences_conferences, :spina_conferences_institutions, column: :institution_id
|
15
|
+
add_foreign_key :spina_conferences_delegates, :spina_conferences_institutions,
|
16
|
+
column: :institution_id, on_delete: :cascade
|
17
|
+
add_foreign_key :spina_conferences_presentations, :spina_conferences_room_uses,
|
18
|
+
column: :room_use_id, on_delete: :cascade
|
19
|
+
add_foreign_key :spina_conferences_room_uses, :spina_conferences_room_possessions,
|
20
|
+
column: :room_possession_id, on_delete: :cascade
|
21
|
+
add_foreign_key :spina_conferences_room_uses, :spina_conferences_presentation_types,
|
22
|
+
column: :presentation_type_id, on_delete: :cascade
|
23
|
+
add_foreign_key :spina_conferences_room_possessions, :spina_conferences_rooms,
|
24
|
+
column: :room_id, on_delete: :cascade
|
25
|
+
add_foreign_key :spina_conferences_room_possessions, :spina_conferences_conferences,
|
26
|
+
column: :conference_id, on_delete: :cascade
|
27
|
+
add_foreign_key :spina_conferences_rooms, :spina_conferences_institutions,
|
28
|
+
column: :institution_id, on_delete: :cascade
|
29
|
+
add_foreign_key :spina_conferences_institutions, :spina_images, column: :logo_id,
|
30
|
+
on_delete: :cascade
|
31
|
+
add_foreign_key :spina_conferences_presentation_types, :spina_conferences_conferences,
|
32
|
+
column: :conference_id, on_delete: :cascade
|
33
|
+
add_foreign_key :spina_conferences_conferences, :spina_conferences_institutions,
|
34
|
+
column: :institution_id, on_delete: :cascade
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ChangeSpinaResources < ActiveRecord::Migration[6.0] #:nodoc:
|
4
|
+
def up
|
5
|
+
insert <<-SQL, 'Insert conference pages resource if missing'
|
6
|
+
INSERT INTO spina_resources (name, label, created_at, updated_at)
|
7
|
+
SELECT 'conference_pages', 'Conference pages', current_timestamp, current_timestamp
|
8
|
+
WHERE NOT EXISTS (SELECT name FROM spina_resources WHERE name = 'conference_pages')
|
9
|
+
SQL
|
10
|
+
update <<-SQL, 'Update conference conference pages'
|
11
|
+
WITH resources AS (SELECT id FROM spina_resources WHERE name = 'conference_pages' LIMIT 1)
|
12
|
+
UPDATE spina_pages SET ancestry = null, resource_id = resources.id
|
13
|
+
FROM spina_conferences_conference_page_parts, resources
|
14
|
+
WHERE conference_page_id = spina_pages.id AND conference_page_partable_type = 'Spina::Conferences::Conference'
|
15
|
+
SQL
|
16
|
+
update <<-SQL, 'Update presentation conference pages'
|
17
|
+
WITH resources AS (SELECT id FROM spina_resources WHERE name = 'conference_pages' LIMIT 1)
|
18
|
+
UPDATE spina_pages SET resource_id = resources.id
|
19
|
+
FROM spina_conferences_conference_page_parts, resources
|
20
|
+
WHERE conference_page_id = spina_pages.id AND conference_page_partable_type = 'Spina::Conferences::Presentation'
|
21
|
+
SQL
|
22
|
+
delete <<-SQL, 'Delete resources'
|
23
|
+
DELETE FROM spina_resources WHERE name IN ('conferences', 'presentations')
|
24
|
+
SQL
|
25
|
+
end
|
26
|
+
|
27
|
+
def down
|
28
|
+
insert <<-SQL, 'Insert conferences resource if missing'
|
29
|
+
INSERT INTO spina_resources (name, label, view_template, created_at, updated_at)
|
30
|
+
SELECT 'conferences', 'Conferences', 'conference', current_timestamp, current_timestamp
|
31
|
+
WHERE NOT EXISTS (SELECT name FROM spina_resources WHERE name = 'conferences')
|
32
|
+
SQL
|
33
|
+
update <<-SQL, 'Update conference conference pages'
|
34
|
+
WITH
|
35
|
+
conferences_resources AS (SELECT id FROM spina_resources WHERE name = 'conferences' LIMIT 1),
|
36
|
+
conferences_pages AS (SELECT id FROM spina_pages WHERE view_template = 'conference' LIMIT 1)
|
37
|
+
UPDATE spina_pages SET ancestry = conferences_pages.id, resource_id = conferences_resources.id
|
38
|
+
FROM spina_conferences_conference_page_parts, conferences_resources, conferences_pages
|
39
|
+
WHERE conference_page_id = spina_pages.id AND conference_page_partable_type = 'Spina::Conferences::Conference'
|
40
|
+
SQL
|
41
|
+
insert <<-SQL, 'Insert presentations resource if missing'
|
42
|
+
INSERT INTO spina_resources (name, label, view_template, created_at, updated_at)
|
43
|
+
SELECT 'presentations', 'Presentations', 'presentation', current_timestamp, current_timestamp
|
44
|
+
WHERE NOT EXISTS (SELECT name FROM spina_resources WHERE name = 'presentations')
|
45
|
+
SQL
|
46
|
+
update <<-SQL, 'Update presentation conference pages'
|
47
|
+
WITH presentations_resources AS (SELECT id FROM spina_resources WHERE name = 'presentations' LIMIT 1)
|
48
|
+
UPDATE spina_pages SET resource_id = presentations_resources.id
|
49
|
+
FROM spina_conferences_conference_page_parts, presentations_resources
|
50
|
+
WHERE conference_page_id = spina_pages.id AND conference_page_partable_type = 'Spina::Conferences::Presentation'
|
51
|
+
SQL
|
52
|
+
delete <<-SQL, 'Delete resources'
|
53
|
+
DELETE FROM spina_resources WHERE name = 'conference_pages'
|
54
|
+
SQL
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesParts < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_parts do |t| # rubocop:disable Rails/CreateTableWithTimestamps
|
6
|
+
t.string :title
|
7
|
+
t.string :name
|
8
|
+
t.references :partable, polymorphic: true, index: false
|
9
|
+
t.references :pageable, polymorphic: true, index: false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,199 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This migration comes from spina_conferences (originally 20190701174807)
|
4
|
+
|
5
|
+
class RemoveSpinaConferencePages < ActiveRecord::Migration[6.0] #:nodoc:
|
6
|
+
def up
|
7
|
+
insert <<-SQL, 'Insert conferences parts'
|
8
|
+
WITH parts AS (
|
9
|
+
SELECT
|
10
|
+
title,
|
11
|
+
name,
|
12
|
+
page_partable_id, page_partable_type,
|
13
|
+
spina_conferences_conferences.id AS pageable_id,
|
14
|
+
page_partable_type AS pageable_type
|
15
|
+
FROM spina_conferences_conferences
|
16
|
+
INNER JOIN spina_conferences_conference_page_parts
|
17
|
+
ON conference_page_partable_id = spina_conferences_conferences.id
|
18
|
+
AND conference_page_partable_type = 'Spina::Conferences::Conference'
|
19
|
+
INNER JOIN spina_page_parts ON conference_page_id = page_id
|
20
|
+
UNION
|
21
|
+
SELECT
|
22
|
+
spina_page_parts.title, name, page_partable_id, page_partable_type, spina_conferences_presentations.id, page_partable_type
|
23
|
+
FROM spina_conferences_presentations
|
24
|
+
INNER JOIN spina_conferences_conference_page_parts
|
25
|
+
ON conference_page_partable_id = spina_conferences_presentations.id
|
26
|
+
AND conference_page_partable_type = 'Spina::Conferences::Presentation'
|
27
|
+
INNER JOIN spina_page_parts ON conference_page_id = page_id
|
28
|
+
)
|
29
|
+
INSERT INTO spina_conferences_parts (title, name, partable_id, partable_type, pageable_id, pageable_type)
|
30
|
+
SELECT title, name, page_partable_id, page_partable_type, pageable_id, pageable_type FROM parts
|
31
|
+
SQL
|
32
|
+
delete <<-SQL, 'Delete page parts'
|
33
|
+
WITH parts AS (
|
34
|
+
SELECT spina_page_parts.id AS id
|
35
|
+
FROM spina_conferences_conferences
|
36
|
+
LEFT JOIN spina_conferences_conference_page_parts
|
37
|
+
ON conference_page_partable_id = spina_conferences_conferences.id
|
38
|
+
AND conference_page_partable_type = 'Spina::Conferences::Conference'
|
39
|
+
LEFT JOIN spina_page_parts ON conference_page_id = page_id
|
40
|
+
UNION
|
41
|
+
SELECT spina_page_parts.id
|
42
|
+
FROM spina_conferences_presentations
|
43
|
+
LEFT JOIN spina_conferences_conference_page_parts
|
44
|
+
ON conference_page_partable_id = spina_conferences_presentations.id
|
45
|
+
AND conference_page_partable_type = 'Spina::Conferences::Presentation'
|
46
|
+
LEFT JOIN spina_page_parts ON conference_page_id = page_id
|
47
|
+
)
|
48
|
+
DELETE FROM spina_page_parts USING parts WHERE spina_page_parts.id = parts.id
|
49
|
+
SQL
|
50
|
+
delete <<-SQL, 'Delete pages'
|
51
|
+
DELETE FROM spina_pages USING spina_conferences_conference_page_parts WHERE conference_page_id = spina_pages.id
|
52
|
+
SQL
|
53
|
+
delete <<-SQL, 'Delete conference page parts'
|
54
|
+
DELETE FROM spina_conferences_conference_page_parts
|
55
|
+
USING spina_conferences_conferences, spina_conferences_presentations
|
56
|
+
WHERE (
|
57
|
+
conference_page_partable_id = spina_conferences_conferences.id
|
58
|
+
AND conference_page_partable_type = 'Spina::Conferences::Conference'
|
59
|
+
)
|
60
|
+
OR (
|
61
|
+
conference_page_partable_id = spina_conferences_presentations.id
|
62
|
+
AND conference_page_partable_type = 'Spina::Conferences::Presentation'
|
63
|
+
)
|
64
|
+
SQL
|
65
|
+
delete <<-SQL, 'Delete conferences page'
|
66
|
+
DELETE FROM spina_pages WHERE name = 'conferences'
|
67
|
+
SQL
|
68
|
+
delete <<-SQL, 'Delete conference pages resource'
|
69
|
+
DELETE FROM spina_resources WHERE name = 'conference_pages'
|
70
|
+
SQL
|
71
|
+
remove_column :spina_pages, :type
|
72
|
+
end
|
73
|
+
|
74
|
+
def down
|
75
|
+
add_column :spina_pages, :type, :string
|
76
|
+
insert <<-SQL, 'Insert resource if missing'
|
77
|
+
INSERT INTO spina_resources (name, label, created_at, updated_at)
|
78
|
+
SELECT 'conference_pages', 'Conference pages', current_timestamp, current_timestamp
|
79
|
+
WHERE NOT EXISTS (SELECT name FROM spina_resources WHERE name = 'conference_pages')
|
80
|
+
SQL
|
81
|
+
locale = ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)
|
82
|
+
insert <<-SQL, 'Insert root page if missing', nil, nil, nil, [locale]
|
83
|
+
WITH pages AS (
|
84
|
+
INSERT INTO spina_pages (name, view_template, deletable, created_at, updated_at)
|
85
|
+
SELECT 'conferences', 'conferences', false, current_timestamp, current_timestamp
|
86
|
+
WHERE NOT EXISTS (SELECT name FROM spina_pages WHERE name = 'conferences')
|
87
|
+
RETURNING id
|
88
|
+
)
|
89
|
+
INSERT INTO spina_page_translations (title, spina_page_id, locale, created_at, updated_at)
|
90
|
+
SELECT 'Conferences', pages.id, $1, current_timestamp, current_timestamp FROM pages
|
91
|
+
SQL
|
92
|
+
insert <<-SQL, 'Insert conference pages for conferences', nil, nil, nil, [locale]
|
93
|
+
WITH
|
94
|
+
resources AS (SELECT id FROM spina_resources WHERE name = 'conference_pages' LIMIT 1),
|
95
|
+
conferences_pages AS (SELECT id FROM spina_pages WHERE view_template = 'conferences' LIMIT 1),
|
96
|
+
conference_pages_to_insert AS (
|
97
|
+
SELECT
|
98
|
+
concat_ws(' ', name, date_part('year', lower(dates))) AS title,
|
99
|
+
false AS deletable,
|
100
|
+
resources.id AS resource_id,
|
101
|
+
conferences_pages.id AS ancestry,
|
102
|
+
'conference' AS view_template,
|
103
|
+
spina_conferences_conferences.id AS conference_id,
|
104
|
+
'Spina::Conferences::Conference' AS type
|
105
|
+
FROM spina_conferences_conferences
|
106
|
+
INNER JOIN spina_conferences_institutions ON institution_id = spina_conferences_institutions.id
|
107
|
+
CROSS JOIN resources
|
108
|
+
CROSS JOIN conferences_pages
|
109
|
+
ORDER BY type, spina_conferences_conferences.id
|
110
|
+
), conference_pages AS (
|
111
|
+
INSERT INTO spina_pages (deletable, resource_id, ancestry, view_template, type, created_at, updated_at)
|
112
|
+
SELECT
|
113
|
+
deletable, resource_id, ancestry, view_template, 'Spina::Conferences::ConferencePage', current_timestamp, current_timestamp
|
114
|
+
FROM conference_pages_to_insert
|
115
|
+
RETURNING id AS page_id
|
116
|
+
), conference_page_translations AS (
|
117
|
+
INSERT INTO spina_page_translations (spina_page_id, locale, title, created_at, updated_at)
|
118
|
+
SELECT page_id, $1, title, current_timestamp, current_timestamp
|
119
|
+
FROM (
|
120
|
+
SELECT title, row_number() OVER (ORDER BY type, conference_id) AS index FROM conference_pages_to_insert
|
121
|
+
) AS pages_to_insert_with_indices
|
122
|
+
INNER JOIN (
|
123
|
+
SELECT page_id, row_number() OVER (ORDER BY page_id) AS index FROM conference_pages
|
124
|
+
) AS pages_with_indices USING (index)
|
125
|
+
)
|
126
|
+
INSERT INTO spina_conferences_conference_page_parts
|
127
|
+
(conference_page_id, conference_page_partable_id, conference_page_partable_type, created_at, updated_at)
|
128
|
+
SELECT page_id, conference_id, type, current_timestamp, current_timestamp
|
129
|
+
FROM (
|
130
|
+
SELECT conference_id, type, row_number() OVER (ORDER BY type, conference_id) AS index FROM conference_pages_to_insert
|
131
|
+
) AS pages_to_insert_with_indices
|
132
|
+
INNER JOIN (
|
133
|
+
SELECT page_id, row_number() OVER (ORDER BY page_id) AS index FROM conference_pages
|
134
|
+
) AS pages_with_indices USING (index)
|
135
|
+
SQL
|
136
|
+
insert <<-SQL, 'Insert conference pages for presentations', nil, nil, nil, [locale]
|
137
|
+
WITH
|
138
|
+
resources AS (SELECT id FROM spina_resources WHERE name = 'conference_pages' LIMIT 1),
|
139
|
+
conference_pages_to_insert AS (
|
140
|
+
SELECT
|
141
|
+
title,
|
142
|
+
false AS deletable,
|
143
|
+
resources.id AS resource_id,
|
144
|
+
spina_conferences_conference_page_parts.conference_page_id AS ancestry,
|
145
|
+
'presentation' AS view_template,
|
146
|
+
spina_conferences_presentations.id AS presentation_id,
|
147
|
+
'Spina::Conferences::Presentation' AS type
|
148
|
+
FROM spina_conferences_presentations
|
149
|
+
INNER JOIN spina_conferences_room_uses ON room_use_id = spina_conferences_room_uses.id
|
150
|
+
INNER JOIN spina_conferences_presentation_types ON presentation_type_id = spina_conferences_presentation_types.id
|
151
|
+
INNER JOIN spina_conferences_conference_page_parts
|
152
|
+
ON conference_page_partable_id = conference_id AND conference_page_partable_type = 'Spina::Conferences::Conference'
|
153
|
+
CROSS JOIN resources
|
154
|
+
ORDER BY type, presentation_id
|
155
|
+
), conference_pages AS (
|
156
|
+
INSERT INTO spina_pages (deletable, resource_id, ancestry, view_template, type, created_at, updated_at)
|
157
|
+
SELECT
|
158
|
+
deletable, resource_id, ancestry, view_template, 'Spina::Conferences::ConferencePage', current_timestamp, current_timestamp
|
159
|
+
FROM conference_pages_to_insert
|
160
|
+
RETURNING id AS page_id
|
161
|
+
), conference_page_translations AS (
|
162
|
+
INSERT INTO spina_page_translations (spina_page_id, locale, title, created_at, updated_at)
|
163
|
+
SELECT page_id, $1, title, current_timestamp, current_timestamp
|
164
|
+
FROM (
|
165
|
+
SELECT title, row_number() OVER (ORDER BY type, presentation_id) AS index FROM conference_pages_to_insert
|
166
|
+
) AS conference_pages_with_indices
|
167
|
+
INNER JOIN (
|
168
|
+
SELECT page_id, row_number() OVER (ORDER BY page_id) AS index FROM conference_pages
|
169
|
+
) AS pages_with_indices USING (index)
|
170
|
+
)
|
171
|
+
INSERT INTO spina_conferences_conference_page_parts
|
172
|
+
(conference_page_id, conference_page_partable_id, conference_page_partable_type, created_at, updated_at)
|
173
|
+
SELECT page_id, presentation_id, type, current_timestamp, current_timestamp
|
174
|
+
FROM (
|
175
|
+
SELECT presentation_id, type, row_number() OVER (ORDER BY type, presentation_id) AS index FROM conference_pages_to_insert
|
176
|
+
) AS conference_pages_with_indices
|
177
|
+
INNER JOIN (
|
178
|
+
SELECT page_id, row_number() OVER (ORDER BY page_id) AS index FROM conference_pages
|
179
|
+
) AS pages_with_indices USING (index)
|
180
|
+
SQL
|
181
|
+
insert <<-SQL, 'Insert page parts'
|
182
|
+
INSERT INTO spina_page_parts (title, name, page_id, page_partable_id, page_partable_type, created_at, updated_at)
|
183
|
+
SELECT
|
184
|
+
spina_conferences_parts.title, spina_conferences_parts.name, spina_pages.id, partable_id, partable_type, current_timestamp,
|
185
|
+
current_timestamp
|
186
|
+
FROM spina_conferences_parts
|
187
|
+
LEFT JOIN spina_conferences_conferences
|
188
|
+
ON pageable_id = spina_conferences_conferences.id AND pageable_type = 'Spina::Conferences::Conference'
|
189
|
+
LEFT JOIN spina_conferences_presentations
|
190
|
+
ON pageable_id = spina_conferences_presentations.id AND pageable_type = 'Spina::Conferences::Presentation'
|
191
|
+
INNER JOIN spina_conferences_conference_page_parts
|
192
|
+
ON pageable_id = conference_page_partable_id AND pageable_type = conference_page_partable_type
|
193
|
+
INNER JOIN spina_pages ON conference_page_id = spina_pages.id
|
194
|
+
SQL
|
195
|
+
delete <<-SQL, 'Delete conference parts'
|
196
|
+
DELETE FROM spina_conferences_parts USING spina_page_parts WHERE page_partable_id = partable_id AND page_partable_type = partable_type
|
197
|
+
SQL
|
198
|
+
end
|
199
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class AddConstraintsToColumns < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
5
|
+
change_column_null :spina_conferences_conferences, :dates, false
|
6
|
+
change_column_null :spina_conferences_conferences, :institution_id, false
|
7
|
+
change_column_null :spina_conferences_delegates, :first_name, false
|
8
|
+
change_column_null :spina_conferences_delegates, :last_name, false
|
9
|
+
change_column_null :spina_conferences_delegates, :institution_id, false
|
10
|
+
change_column_null :spina_conferences_dietary_requirements, :name, false
|
11
|
+
change_column_null :spina_conferences_institutions, :name, false
|
12
|
+
change_column_null :spina_conferences_institutions, :city, false
|
13
|
+
change_column_null :spina_conferences_presentation_types, :name, false
|
14
|
+
change_column_null :spina_conferences_presentation_types, :duration, false
|
15
|
+
change_column_null :spina_conferences_presentation_types, :conference_id, false
|
16
|
+
change_column_null :spina_conferences_presentations, :title, false
|
17
|
+
change_column_null :spina_conferences_presentations, :abstract, false
|
18
|
+
change_column_null :spina_conferences_presentations, :start_datetime, false
|
19
|
+
change_column_null :spina_conferences_presentations, :room_use_id, false
|
20
|
+
change_column_null :spina_conferences_rooms, :number, false
|
21
|
+
change_column_null :spina_conferences_rooms, :building, false
|
22
|
+
change_column_null :spina_conferences_rooms, :institution_id, false
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesPresentationAttachmentTypes < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_presentation_attachment_types do |t|
|
6
|
+
t.string :name
|
7
|
+
|
8
|
+
t.timestamps null: false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesPresentationAttachments < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change # rubocop:disable Metrics/MethodLength
|
5
|
+
create_table :spina_conferences_presentation_attachments do |t|
|
6
|
+
t.references :presentation,
|
7
|
+
null: false, foreign_key: { to_table: :spina_conferences_presentations, on_delete: :cascade },
|
8
|
+
index: { name: 'index_conferences_presentation_attachments_on_presentation_id' }
|
9
|
+
t.references :attachment_type,
|
10
|
+
null: false,
|
11
|
+
foreign_key: { to_table: :spina_conferences_presentation_attachment_types, on_delete: :cascade },
|
12
|
+
index: { name: 'index_conferences_presentation_attachments_on_type_id' }
|
13
|
+
t.references :attachment, foreign_key: { to_table: :spina_attachments, on_delete: :nullify },
|
14
|
+
index: { name: 'index_conferences_presentation_attachments_on_attachment_id' }
|
15
|
+
|
16
|
+
t.timestamps null: false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/db/migrate/20200420104603_create_spina_conferences_dietary_requirement_name_translations.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesDietaryRequirementNameTranslations < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_dietary_requirement_translations do |t|
|
6
|
+
# Translated attribute(s)
|
7
|
+
t.string :name
|
8
|
+
|
9
|
+
t.string :locale, null: false
|
10
|
+
t.references :spina_conferences_dietary_requirement, null: false, foreign_key: { on_delete: :cascade }, index: false
|
11
|
+
|
12
|
+
t.timestamps null: false
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :spina_conferences_dietary_requirement_translations, :locale, name: :index_e52faf9b7cbf3a3d55057c84094a3a10b5de6fdd
|
16
|
+
add_index :spina_conferences_dietary_requirement_translations, %i[spina_conferences_dietary_requirement_id locale],
|
17
|
+
name: :index_70c4d45aefa2ef2619dd91b976391c1025d86e89, unique: true
|
18
|
+
end
|
19
|
+
end
|
data/db/migrate/20200420104740_create_spina_conferences_institution_name_and_city_translations.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesInstitutionNameAndCityTranslations < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_institution_translations do |t|
|
6
|
+
# Translated attribute(s)
|
7
|
+
t.string :name
|
8
|
+
t.string :city
|
9
|
+
|
10
|
+
t.string :locale, null: false
|
11
|
+
t.references :spina_conferences_institution, null: false, foreign_key: { on_delete: :cascade }, index: false
|
12
|
+
|
13
|
+
t.timestamps null: false
|
14
|
+
end
|
15
|
+
|
16
|
+
add_index :spina_conferences_institution_translations, :locale, name: :index_9bff91c74e064cdc801502a3787ebe9a10fdecd1
|
17
|
+
add_index :spina_conferences_institution_translations, %i[spina_conferences_institution_id locale],
|
18
|
+
name: :index_28cf5cb308f9303c2ac50856f314ece46e11d90e, unique: true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesPresentationTitleAndAbstractTranslations < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_presentation_translations do |t|
|
6
|
+
# Translated attribute(s)
|
7
|
+
t.string :title
|
8
|
+
t.text :abstract
|
9
|
+
|
10
|
+
t.string :locale, null: false
|
11
|
+
t.references :spina_conferences_presentation, null: false, foreign_key: { on_delete: :cascade }, index: false
|
12
|
+
|
13
|
+
t.timestamps null: false
|
14
|
+
end
|
15
|
+
|
16
|
+
add_index :spina_conferences_presentation_translations, :locale, name: :index_0cda3821bc3be79968f9671e2a1d655e2307ad5b
|
17
|
+
add_index :spina_conferences_presentation_translations, %i[spina_conferences_presentation_id locale],
|
18
|
+
name: :index_a9e38adc19b163962a915fe8d3d1f2415f0c83a0, unique: true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesPresentationAttachmentTypeNameTranslations < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_presentation_attachment_type_translations do |t|
|
6
|
+
# Translated attribute(s)
|
7
|
+
t.string :name
|
8
|
+
|
9
|
+
t.string :locale, null: false
|
10
|
+
t.references :spina_conferences_presentation_attachment_type,
|
11
|
+
null: false, foreign_key: { on_delete: :cascade }, index: false
|
12
|
+
|
13
|
+
t.timestamps null: false
|
14
|
+
end
|
15
|
+
|
16
|
+
add_index :spina_conferences_presentation_attachment_type_translations, :locale, name: :index_f3417b08c78b5a87825d3f14b49fb06e76b8bed4
|
17
|
+
add_index :spina_conferences_presentation_attachment_type_translations, %i[spina_conferences_presentation_attachment_type_id locale],
|
18
|
+
name: :index_1b650dff92fcf8462275bfd83c507ea5c40b3ebb, unique: true
|
19
|
+
end
|
20
|
+
end
|
data/db/migrate/20200420105201_create_spina_conferences_presentation_type_name_translations.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesPresentationTypeNameTranslations < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_presentation_type_translations do |t|
|
6
|
+
# Translated attribute(s)
|
7
|
+
t.string :name
|
8
|
+
|
9
|
+
t.string :locale, null: false
|
10
|
+
t.references :spina_conferences_presentation_type, null: false, foreign_key: { on_delete: :cascade }, index: false
|
11
|
+
|
12
|
+
t.timestamps null: false
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :spina_conferences_presentation_type_translations, :locale, name: :index_22c39c0f300797c95ab75d46960dc27730d2065f
|
16
|
+
add_index :spina_conferences_presentation_type_translations, %i[spina_conferences_presentation_type_id locale],
|
17
|
+
name: :index_fa3b8cb99b12895308e3fc943d6db212ce4408d0, unique: true
|
18
|
+
end
|
19
|
+
end
|
data/db/migrate/20200420105458_create_spina_conferences_room_building_and_number_translations.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateSpinaConferencesRoomBuildingAndNumberTranslations < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def change
|
5
|
+
create_table :spina_conferences_room_translations do |t|
|
6
|
+
# Translated attribute(s)
|
7
|
+
t.string :building
|
8
|
+
t.string :number
|
9
|
+
|
10
|
+
t.string :locale, null: false
|
11
|
+
t.references :spina_conferences_room, null: false, foreign_key: { on_delete: :cascade }, index: false
|
12
|
+
|
13
|
+
t.timestamps null: false
|
14
|
+
end
|
15
|
+
|
16
|
+
add_index :spina_conferences_room_translations, :locale, name: :index_spina_conferences_room_translations_on_locale
|
17
|
+
add_index :spina_conferences_room_translations, %i[spina_conferences_room_id locale],
|
18
|
+
name: :index_a83edb40b92a36d42b882b3a9adf6d2be543dee7, unique: true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class MoveAttributesToTranslationTables < ActiveRecord::Migration[6.0] # :nodoc:
|
4
|
+
def up
|
5
|
+
insert_dietary_requirement_translations
|
6
|
+
insert_institution_translations
|
7
|
+
insert_presentation_translations
|
8
|
+
insert_presentation_attachment_type_translations
|
9
|
+
insert_presentation_type_translations
|
10
|
+
insert_room_translations
|
11
|
+
end
|
12
|
+
|
13
|
+
def down
|
14
|
+
update_dietary_requirements
|
15
|
+
update_institutions
|
16
|
+
update_presentations
|
17
|
+
update_presentation_attachment_types
|
18
|
+
update_presentation_types
|
19
|
+
update_rooms
|
20
|
+
add_null_constraints
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def add_null_constraints
|
26
|
+
change_column_null :spina_conferences_dietary_requirements, :name, false
|
27
|
+
change_column_null :spina_conferences_institutions, :name, false
|
28
|
+
change_column_null :spina_conferences_institutions, :city, false
|
29
|
+
change_column_null :spina_conferences_presentation_types, :name, false
|
30
|
+
change_column_null :spina_conferences_presentation_attachment_types, :name, false
|
31
|
+
change_column_null :spina_conferences_presentations, :title, false
|
32
|
+
change_column_null :spina_conferences_presentations, :abstract, false
|
33
|
+
change_column_null :spina_conferences_rooms, :number, false
|
34
|
+
change_column_null :spina_conferences_rooms, :building, false
|
35
|
+
end
|
36
|
+
|
37
|
+
def update_dietary_requirements
|
38
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
39
|
+
update <<-SQL.squish, 'Add dietary requirement attributes', binds
|
40
|
+
UPDATE spina_conferences_dietary_requirements SET name = translations.name
|
41
|
+
FROM spina_conferences_dietary_requirement_translations AS translations
|
42
|
+
WHERE spina_conferences_dietary_requirement_id = spina_conferences_dietary_requirements.id AND locale = $1
|
43
|
+
SQL
|
44
|
+
delete <<-SQL.squish, 'Delete translations'
|
45
|
+
DELETE FROM spina_conferences_dietary_requirement_translations
|
46
|
+
SQL
|
47
|
+
end
|
48
|
+
|
49
|
+
def update_institutions
|
50
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
51
|
+
update <<-SQL.squish, 'Add institution attributes', binds
|
52
|
+
UPDATE spina_conferences_institutions SET (name, city) = (translations.name, translations.city)
|
53
|
+
FROM spina_conferences_institution_translations AS translations
|
54
|
+
WHERE translations.spina_conferences_institution_id = spina_conferences_institutions.id AND locale = $1
|
55
|
+
SQL
|
56
|
+
delete <<-SQL.squish, 'Delete translations'
|
57
|
+
DELETE FROM spina_conferences_institution_translations
|
58
|
+
SQL
|
59
|
+
end
|
60
|
+
|
61
|
+
def update_presentations
|
62
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
63
|
+
update <<-SQL.squish, 'Add presentation attributes', binds
|
64
|
+
UPDATE spina_conferences_presentations SET (title, abstract) = (translations.title, translations.abstract)
|
65
|
+
FROM spina_conferences_presentation_translations AS translations
|
66
|
+
WHERE spina_conferences_presentation_id = spina_conferences_presentations.id AND locale = $1
|
67
|
+
SQL
|
68
|
+
delete <<-SQL.squish, 'Delete translations'
|
69
|
+
DELETE FROM spina_conferences_presentation_translations
|
70
|
+
SQL
|
71
|
+
end
|
72
|
+
|
73
|
+
def update_presentation_attachment_types
|
74
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
75
|
+
update <<-SQL.squish, 'Add presentation attachment type attributes', binds
|
76
|
+
UPDATE spina_conferences_presentation_attachment_types SET name = translations.name
|
77
|
+
FROM spina_conferences_presentation_attachment_type_translations AS translations
|
78
|
+
WHERE spina_conferences_presentation_attachment_type_id = spina_conferences_presentation_attachment_types.id AND locale = $1
|
79
|
+
SQL
|
80
|
+
delete <<-SQL.squish, 'Delete translations'
|
81
|
+
DELETE FROM spina_conferences_presentation_attachment_type_translations
|
82
|
+
SQL
|
83
|
+
end
|
84
|
+
|
85
|
+
def update_presentation_types
|
86
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
87
|
+
update <<-SQL.squish, 'Add presentation type attributes', binds
|
88
|
+
UPDATE spina_conferences_presentation_types SET name = translations.name
|
89
|
+
FROM spina_conferences_presentation_type_translations AS translations
|
90
|
+
WHERE spina_conferences_presentation_type_id = spina_conferences_presentation_types.id AND locale = $1
|
91
|
+
SQL
|
92
|
+
delete <<-SQL.squish, 'Delete translations'
|
93
|
+
DELETE FROM spina_conferences_presentation_type_translations
|
94
|
+
SQL
|
95
|
+
end
|
96
|
+
|
97
|
+
def update_rooms
|
98
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
99
|
+
update <<-SQL.squish, 'Add room attributes', binds
|
100
|
+
UPDATE spina_conferences_rooms SET (building, number) = (translations.building, translations.number)
|
101
|
+
FROM spina_conferences_room_translations AS translations
|
102
|
+
WHERE spina_conferences_room_id = spina_conferences_rooms.id AND locale = $1
|
103
|
+
SQL
|
104
|
+
delete <<-SQL.squish, 'Delete translations'
|
105
|
+
DELETE FROM spina_conferences_room_translations
|
106
|
+
SQL
|
107
|
+
end
|
108
|
+
|
109
|
+
def insert_dietary_requirement_translations
|
110
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
111
|
+
insert <<-SQL.squish, 'Insert dietary requirement translations', nil, nil, nil, binds
|
112
|
+
INSERT INTO spina_conferences_dietary_requirement_translations
|
113
|
+
(name, locale, created_at, updated_at, spina_conferences_dietary_requirement_id)
|
114
|
+
SELECT name, $1, created_at, updated_at, id FROM spina_conferences_dietary_requirements
|
115
|
+
SQL
|
116
|
+
end
|
117
|
+
|
118
|
+
def insert_institution_translations
|
119
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
120
|
+
insert <<-SQL.squish, 'Insert institution translations', nil, nil, nil, binds
|
121
|
+
INSERT INTO spina_conferences_institution_translations
|
122
|
+
(name, city, locale, created_at, updated_at, spina_conferences_institution_id)
|
123
|
+
SELECT name, city, $1, created_at, updated_at, id FROM spina_conferences_institutions
|
124
|
+
SQL
|
125
|
+
end
|
126
|
+
|
127
|
+
def insert_presentation_translations
|
128
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
129
|
+
insert <<-SQL.squish, 'Insert presentation translations', nil, nil, nil, binds
|
130
|
+
INSERT INTO spina_conferences_presentation_translations
|
131
|
+
(title, abstract, locale, created_at, updated_at, spina_conferences_presentation_id)
|
132
|
+
SELECT title, abstract, $1, created_at, updated_at, id FROM spina_conferences_presentations
|
133
|
+
SQL
|
134
|
+
end
|
135
|
+
|
136
|
+
def insert_presentation_attachment_type_translations
|
137
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
138
|
+
insert <<-SQL.squish, 'Insert presentation attachment type translations', nil, nil, nil, binds
|
139
|
+
INSERT INTO spina_conferences_presentation_attachment_type_translations
|
140
|
+
(name, locale, created_at, updated_at, spina_conferences_presentation_attachment_type_id)
|
141
|
+
SELECT name, $1, created_at, updated_at, id FROM spina_conferences_presentation_attachment_types
|
142
|
+
SQL
|
143
|
+
end
|
144
|
+
|
145
|
+
def insert_presentation_type_translations
|
146
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
147
|
+
insert <<-SQL.squish, 'Insert presentation type translations', nil, nil, nil, binds
|
148
|
+
INSERT INTO spina_conferences_presentation_type_translations
|
149
|
+
(name, locale, created_at, updated_at, spina_conferences_presentation_type_id)
|
150
|
+
SELECT name, $1, created_at, updated_at, id FROM spina_conferences_presentation_types
|
151
|
+
SQL
|
152
|
+
end
|
153
|
+
|
154
|
+
def insert_room_translations
|
155
|
+
binds = [ActiveRecord::Relation::QueryAttribute.new('locale', I18n.default_locale, ActiveRecord::Type::String.new)]
|
156
|
+
insert <<-SQL.squish, 'Insert room translations', nil, nil, nil, binds
|
157
|
+
INSERT INTO spina_conferences_room_translations (building, number, locale, created_at, updated_at, spina_conferences_room_id)
|
158
|
+
SELECT building, number, $1, created_at, updated_at, id FROM spina_conferences_rooms
|
159
|
+
SQL
|
160
|
+
end
|
161
|
+
end
|