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

Modify Plugs.DataToAttributes to follow JSON API sideposting draft

Aperta
#1,303 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
blocked
Lingua principale
Elixir
Stelle
234
Fork
82
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

# Problem

From https://github.com/json-api/json-api/pull/1197/files?short_path=571f6ce#diff-571f6cee9a492e0e177801c21a4b2b2a

Our current approach with included records is to simply assume they are related to the main record.

Based on the draft

- included record payloads should have `temp-id` properties if they are to be created.
- the main record payload should have a relationship where the identifier is `%{data: [%{"temp-id" => "foo", "type" => "bar"}`
- the plug should get those identifiers, then replace the identifier payloads with the associated full payloads matched in included

## Subtasks

- instead of just taking any `included` records and assuming they're relationships in the resulting params map, `DataToAttributes` should parse the `relationships` map first
- the relationship where `data` is a map is a belongs to and should be left alone. it's already handled by `JaSerializer.Params.to_attributes`
- the relationship where `data` is an array should be checked for identifiers with `temp-id` keys
- each `temp-id` should be found in the `included` section and added under the pluralized relationship key in the resulting map

An advantage of this is that we now are able to conclude it's definitely a `has_many`, so we do not need to explicitly specify this anymore.

## References

The code this needs to modify is part of #1301 so this is blocked until that is merged.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.