code-corps / code-corps/code-corps-api
Add counter cache to projects for open and closed conversations
- 主要言語
- Elixir
- スター
- 234
- フォーク
- 82
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
# 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_id` to `Conversation`
- [ ] 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](https://hexdocs.pm/ecto/Ecto.Changeset.html#prepare_changes/2-example)
A useful post on this, as well: https://medium.com/@kaisersly/prepare-changes-and-counter-cache-abd93b8a20a
コントリビューションガイド
評価
この issue はまだ評価されていません。