diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 6398f7b16..dbfbc0487 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -79,8 +79,11 @@ def upcoming_events end def total_upcoming_events_count - workshops = Workshop.eager_load(:chapter, :sponsors, :organisers, :permissions) - all_events(workshops.to_a).count + workshop_count = Workshop.upcoming.count + event_count = Event.upcoming.count + meeting_exists = Meeting.next.present? ? 1 : 0 + + workshop_count + event_count + meeting_exists end def upcoming_events_for_user diff --git a/app/presenters/event_presenter.rb b/app/presenters/event_presenter.rb index 1a4eb7725..0546416da 100644 --- a/app/presenters/event_presenter.rb +++ b/app/presenters/event_presenter.rb @@ -30,7 +30,7 @@ def short_description end def organisers - @organisers ||= model.permissions.find_by(name: 'organiser')&.members || [] + @organisers ||= model.organisers.to_a end def month diff --git a/app/presenters/workshop_presenter.rb b/app/presenters/workshop_presenter.rb index 694b65a32..c9292a726 100644 --- a/app/presenters/workshop_presenter.rb +++ b/app/presenters/workshop_presenter.rb @@ -32,7 +32,10 @@ def venue end def organisers - @organisers ||= model.permissions.find_by(name: 'organiser')&.members || chapter_organisers + @organisers ||= begin + orgs = model.organisers.to_a + orgs.any? ? orgs : chapter_organisers + end end def attendees_checklist diff --git a/db/migrate/20260224120000_add_indexes_for_invitation_queries.rb b/db/migrate/20260224120000_add_indexes_for_invitation_queries.rb new file mode 100644 index 000000000..a0fefa66b --- /dev/null +++ b/db/migrate/20260224120000_add_indexes_for_invitation_queries.rb @@ -0,0 +1,12 @@ +class AddIndexesForInvitationQueries < ActiveRecord::Migration[8.1] + def change + add_index :workshop_invitations, %i[member_id attending], name: 'index_workshop_invitations_member_attending' + add_index :workshop_invitations, %i[workshop_id attending], name: 'index_workshop_invitations_workshop_attending' + + add_index :meeting_invitations, %i[member_id attending], name: 'index_meeting_invitations_member_attending' + add_index :meeting_invitations, %i[meeting_id attending], name: 'index_meeting_invitations_meeting_attending' + + add_index :invitations, %i[member_id attending], name: 'index_invitations_member_attending' + add_index :invitations, %i[event_id attending], name: 'index_invitations_event_attending' + end +end diff --git a/db/schema.rb b/db/schema.rb index c2583f1ff..901120493 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.1].define(version: 2026_02_11_140256) do +ActiveRecord::Schema[8.1].define(version: 2026_02_24_120000) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -298,7 +298,9 @@ t.datetime "updated_at", precision: nil t.boolean "verified" t.integer "verified_by_id" + t.index ["event_id", "attending"], name: "index_invitations_event_attending" t.index ["event_id"], name: "index_invitations_on_event_id" + t.index ["member_id", "attending"], name: "index_invitations_member_attending" t.index ["member_id"], name: "index_invitations_on_member_id" t.index ["verified_by_id"], name: "index_invitations_on_verified_by_id" end @@ -338,7 +340,9 @@ t.string "role" t.string "token" t.datetime "updated_at", precision: nil + t.index ["meeting_id", "attending"], name: "index_meeting_invitations_meeting_attending" t.index ["meeting_id"], name: "index_meeting_invitations_on_meeting_id" + t.index ["member_id", "attending"], name: "index_meeting_invitations_member_attending" t.index ["member_id"], name: "index_meeting_invitations_on_member_id" end @@ -547,8 +551,10 @@ t.text "tutorial" t.datetime "updated_at", precision: nil t.integer "workshop_id" + t.index ["member_id", "attending"], name: "index_workshop_invitations_member_attending" t.index ["member_id"], name: "index_workshop_invitations_on_member_id" t.index ["token"], name: "index_workshop_invitations_on_token", unique: true + t.index ["workshop_id", "attending"], name: "index_workshop_invitations_workshop_attending" t.index ["workshop_id"], name: "index_workshop_invitations_on_workshop_id" end