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

Add counter cache to projects for open and closed conversations

Đang mở
#1,313 2 bình luận 0 reaction 1 người được giao Được @snewcomer nhận Xem trên GitHub
Time: 2 hours
Ngôn ngữ chính
Elixir
Star
234
Fork
82
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

# 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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.