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

Add counter cache to projects for open and closed conversations

Offen
#1,313 2 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @snewcomer Auf GitHub ansehen
Time: 2 hours
Vorherrschende Sprache
Elixir
Sterne
234
Forks
82
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

# 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

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.