darrell-d

darrell-d OP

If I have a MapSet in the form:

#MapSet <[
    %{
        author: 1234,
        comments: [
        %Other.Module {
            body: "I WANT TO UPDATE THIS",
            other_key: 123,
            ...
        }
        ],
        other_key: 234,
        ...
    }
]>

How can I update the body?

First 6 of 6 Posts Switch mode

kokolegorille

kokolegorille

You have a mapset, that contains a map, that contains a list, with a struct You want to transform…

You should tell how You get this data, because it’s probably easier to treat this when it is build.

        %Other.Module {
            body: "I WANT TO UPDATE THIS",
            other_key: 123,
            ...
        }

You should start by knowing how to procede with this simple transformation, then later You could decompose the more complex structure.

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

Can you elaborate on your use of MapSets? Updating inner items isn’t a particularly normal access pattern.

kip

kip

ex_cldr Core Team

Since the MapSet type is opaque I think you probably should be creating a new MapSet, not trying to mutate an existing one. The type is:

  @opaque t(value) :: %__MODULE__{map: %{optional(value) => []}}
  @type t :: t(term)
NobbZ

NobbZ

Even though the MapSets structure is opaque and has to be treated unknown, we can Access it or use Enum.

So the main question is probably, which of the potentially many bodies in such a set should be changed? If it’s only one, then put_in/get_in are probably of help, if it’s all, Enum.map.

al2o3cr

al2o3cr

I recommend using the MapSet public API: remove the target item from the MapSet with MapSet.delete/2 followed by MapSet.put/2 with the updated value.

darrell-d

darrell-d OP

You’re right. After digging around the source a bit more I came to find where the map was being created and found it far easier to just modify it from the starting point.

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
spammy
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
bottlenecked
Hi all, I wanted to ask how the community is dealing with post-release steps. Today we have Ecto migrations, which make sure that the db...
New
roeland
Kia ora, We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
rahultumpala
Hello, I have an Elixir backend that implements a custom protocol over TCP. I want to load test the backend and assess the performance o...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New

We're in Beta

About us Mission Statement