code-corps-api
code-corps-api copied to clipboard
Add counter cache to projects for open and closed conversations
Problem
When a conversation record is created/updated, we need to update the open_conversations_count and closed _conversations_count counter cache columns on the projects table.
- [ ] Add
project_idtoConversation- [ ] change in Ember app to send the project_id up to the app
- [ ] change in API
- [ ] migrate data
We'll need to update the counts based on the following logic:
- on
insert-
inc: [open_conversations_count: 1]
-
- on
update-
status"open" => "closed"-
inc: [closed_conversations_count: 1, open_conversations_count: -1]
-
-
- on
update-
status"closed" => "open"-
inc: [closed_conversations_count: -1, open_conversations_count: 1]
-
-
We'll add prepare_changes to increment one and decrement the other. See this example in Ecto
A useful post on this, as well: https://medium.com/@kaisersly/prepare-changes-and-counter-cache-abd93b8a20a
tackling this
@joshsmith Do you think the Conversation needs an explicit association to a project for this to work? I think it will if we need to cast the project_id.