fix: update Drizzle relations and inferred types for new message model#253
Open
onyemaechiezekiel9 wants to merge 2 commits into
Open
fix: update Drizzle relations and inferred types for new message model#253onyemaechiezekiel9 wants to merge 2 commits into
onyemaechiezekiel9 wants to merge 2 commits into
Conversation
|
@onyemaechiezekiel9 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix: update Drizzle relations and inferred types for new message model
Closes #179
Summary
Updates the messages schema to support the new end-to-end encryption model:
contentis removed from themessagestable and moved to a newmessageEnvelopestable. Drizzle relations are wired up, inferred types replace hand-written ones, and all consumers are updated to query with{ envelopes: true, senderDevice: true }.Changes
schema.tssenderDeviceIdFK tomessagestable linking touserDevicescontentcolumn and itsmessages_content_search_idxindexmessageEnvelopestable:id(UUID PK),messageId(FK),content,createdAtmessagesRelations:senderDevice(one-to-one →userDevices) +envelopes(one-to-many →messageEnvelopes)messageEnvelopesRelations: reverse relation back tomessagesuserDevicesRelations: devices to their sent messagesType exports
MessageandNewMessagenow usetypeof messages.$inferSelect/$inferInsertMessageEnvelopeandNewMessageEnvelopeinferred typeslib/messages.tsserializeMessage()extractscontentfromenvelopesarraycontentset tonull)socket/messaging.tssend_message: fetches sender's active device, createsmessage+messageEnvelopeseparatelymessage_history: queries with{ envelopes: true, senderDevice: true }ask_assistant: creates assistant device if needed, uses new message structureroutes/conversations.tsJOIN messageEnvelopesinstead of queryingmessage.contentGET /conversations/:id/messagesfetches with{ envelopes: true, senderDevice: true }envelopesandsenderDeviceQueryability
The following now compiles and is queryable:
Security Notes
contentis now stored inmessageEnvelopes, decoupled from the message record — supporting per-recipient envelope encryptionas anyor@ts-ignoresuppressions introduced anywhere