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

Modify Plugs.DataToAttributes to follow JSON API sideposting draft

Open
#1,303 1 comment 0 reactions 0 assignees View on GitHub
blocked
Dominant language
Elixir
Stars
234
Forks
82
PR merge metrics
No merged PRs in 30d

Description

# 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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.