Skip to content

Mo/feat/custom notify query#4011

Draft
MohamadJaara wants to merge 2 commits intodevelopfrom
mo/feat/custom-notify-query
Draft

Mo/feat/custom notify query#4011
MohamadJaara wants to merge 2 commits intodevelopfrom
mo/feat/custom-notify-query

Conversation

@MohamadJaara
Copy link
Copy Markdown
Member


PR Submission Checklist for internal contributors

  • The PR Title

    • conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
    • contains a reference JIRA issue number like SQPIT-764
    • answers the question: If merged, this PR will: ... ³
  • The PR Description

    • is free of optional paragraphs and you have filled the relevant parts to the best of your ability

What's new in this PR?

Issues

in the current model sqldelight .asFlow() from select queries will emit an update for any mutaion select that changes any table in the select without control of wither this mutaion need to update the flow of not
for example

SELECT * FROM Message WHERE conversation_id = 'cool_boiz';

INSERT INTO Message(id, conversation_id, text)
VALUES (:id, `not_cool_boiz`, :text);

the select will update even tho the conversaiton is not related and there is 0 data change for the 'cool_boiz' conv

Causes (Optional)

this is how it works with sqldelight

Solutions

fork sqldelight and add a feature where you can have annotaions in a comment inside the .sq file, those annotaions will resolve to a custom flow listner that follow the annotaions

selectConversationMessages:
-- @CustomKey conversation_:conversation_id
SELECT ...

insertMessage:
-- @NotifyCustomKey conversation_:conversation_id
INSERT ...

How it works:

  • @CustomKey tells a query which keys to listen for
  • @NotifyCustomKey tells a mutation which keys to notify after it runs
  • Placeholders like :conversation_id get resolved from the actual arguments at runtime, so conversation_:conversation_id becomes something like conversation_conv123
  • When custom keys are used, they replace the default table-based invalidation for that statement

This behavior can be configured at compile time so we can adapt it only in internal apps first

what i am looking for in this PR is to start the conversation if this is something we want to adapt

Dependencies (Optional)

If there are some other pull requests related to this one (e.g. new releases of frameworks), specify them here.

Needs releases with:

  • GitHub link to other pull request

Testing

Test Coverage (Optional)

  • I have added automated test to this contribution

How to Test

Briefly describe how this change was tested and if applicable the exact steps taken to verify that it works as expected.

Notes (Optional)

Specify here any other facts that you think are important for this issue.

Attachments (Optional)

Attachments like images, videos, etc. (drag and drop in the text box)


PR Post Submission Checklist for internal contributors (Optional)

  • Wire's Github Workflow has automatically linked the PR to a JIRA issue

PR Post Merge Checklist for internal contributors

  • If any soft of configuration variable was introduced by this PR, it has been added to the relevant documents and the CI jobs have been updated.

References
  1. https://sparkbox.com/foundry/semantic_commit_messages
  2. https://github.com/wireapp/.github#usage
  3. E.g. feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.

@MohamadJaara MohamadJaara marked this pull request as draft April 1, 2026 19:39
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 1, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant