Skip to content

WPB-26704: add full conversation to POST /meetings (create) and PUT /meetings/{domain}/{id} - #5301

Merged
blackheaven merged 7 commits into
developfrom
gdifolco/WPB-26704-meeting-full-conversation
Jul 7, 2026
Merged

WPB-26704: add full conversation to POST /meetings (create) and PUT /meetings/{domain}/{id}#5301
blackheaven merged 7 commits into
developfrom
gdifolco/WPB-26704-meeting-full-conversation

Conversation

@blackheaven

Copy link
Copy Markdown
Contributor

https://wearezeta.atlassian.net/browse/WPB-26704

Checklist

  • Add a new entry in an appropriate subdirectory of changelog.d
  • Read and follow the PR guidelines

@blackheaven
blackheaven requested review from a team as code owners June 30, 2026 16:10
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Jun 30, 2026
Comment thread integration/test/Test/Meetings.hs Outdated
Comment thread libs/wire-api/src/Wire/API/Meeting.hs
Comment thread libs/wire-subsystems/src/Wire/MeetingsSubsystem/Interpreter.hs Outdated
@blackheaven
blackheaven requested a review from supersven July 1, 2026 08:49
Comment thread libs/wire-api/src/Wire/API/Meeting.hs
Comment thread libs/wire-subsystems/src/Wire/MeetingsSubsystem/Interpreter.hs Outdated
Comment thread libs/wire-subsystems/test/unit/Wire/MeetingsSubsystem/InterpreterSpec.hs Outdated
Comment thread libs/wire-subsystems/src/Wire/MeetingsSubsystem/Interpreter.hs
@blackheaven
blackheaven requested a review from supersven July 1, 2026 13:03
@blackheaven
blackheaven force-pushed the gdifolco/WPB-26704-meeting-full-conversation branch 5 times, most recently from e104a72 to a4b5a10 Compare July 2, 2026 20:51
Comment thread integration/test/Test/Meetings.hs Outdated
Comment thread integration/test/Test/Meetings.hs Outdated
Comment thread libs/wire-subsystems/src/Wire/MeetingsSubsystem/Interpreter.hs Outdated
Comment thread libs/wire-subsystems/src/Wire/MeetingsSubsystem/Interpreter.hs Outdated
@blackheaven
blackheaven requested a review from supersven July 6, 2026 09:46
Wrap MeetingWithConversation around Meeting + Conversation instead of
duplicating Meeting's fields. Reuse a shared meetingObject schema so the
flattened JSON (and OpenAPI) output is unchanged. Also simplify
storedMeetingToMeetingWithConversation to delegate to
storedMeetingToMeeting, drop a redundant comment, and move test helpers
after their first call.
- Log a warning when a meeting's conversation is missing in updateMeetingImpl/deleteMeetingImpl (previously failed silently, indistinguishable from a missing meeting for callers)

- Restore full-equality assertion in the create-and-retrieve test (compare fetched against meeting.meeting)

- Document the non-federation invariant on storedMeetingToMeetingWithConversation
@blackheaven

Copy link
Copy Markdown
Contributor Author

Heads-up: while restoring the recurrence tests I noticed recurrence-aware expiry had been dropped vs develop — the cutoff guards and the listMeetings/getOldMeetings queries (Postgres + in-memory) were filtering on endTime only, so recurring meetings expired after their first slot. Reinstated Store.effectiveEndTime + isAlive and the recurrence-aware SQL/queries. Unit tests (incl. the recurrence vs expiry suite) green.

@blackheaven
blackheaven requested a review from supersven July 6, 2026 11:13
…6704 review)

Review feedback (supersven):
- getMeetingConversationOrFail now returns 'Sem r (Maybe StoredConversation)'
  instead of 'MaybeT (Sem r)'; the MaybeT wrapping is pushed into the two
  callers (updateMeetingImpl, deleteMeetingImpl).
- Add a unit test for the data-inconsistency case where a meeting's
  conversation is missing -> updateMeeting returns Nothing.
- Assert conversationId is preserved in the 'applies valid update' property.

Restore recurrence-aware expiry (accidental regression vs develop):
- Reinstate Store.effectiveEndTime and the 'isAlive' helper; replace the 6
  endTime-only cutoff guards with 'isAlive' across get/update/delete and
  add/remove/replace invited emails.
- Restore recurrence-aware WHERE clauses in the Postgres queries
  (listMeetingsByUser, listMeetingsByConversation, getOldMeetings) and the
  matching in-memory store interpreter filters.
- Re-add the 'recurrence vs expiry' test suite (migrated to the
  MeetingWithConversation record) that had been dropped.
@blackheaven
blackheaven force-pushed the gdifolco/WPB-26704-meeting-full-conversation branch from a020395 to 8c71bc8 Compare July 6, 2026 11:30

@supersven supersven left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@blackheaven
blackheaven merged commit eaa782b into develop Jul 7, 2026
10 checks passed
@blackheaven
blackheaven deleted the gdifolco/WPB-26704-meeting-full-conversation branch July 7, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants