code-corps / code-corps/code-corps-api

Add counter cache to projects for open and closed conversations

未关闭
#1,313 2 条评论 0 个 reaction 已指派 1 人 已被 @snewcomer 认领 在 GitHub 查看
Time: 2 hours
主要语言
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 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。