tovarchristian21

tovarchristian21

Parsing from one struct to the other one when the fields are different?

Hello everyone, right now i have 2 different structures. The first one is a message struct and the 2nd one is a thanks struct. These structures have different fields, i’m new to Elixir and i’m not very sure what is a good approach for parsing from one struct to the other one when the fields are different. To be more precise, i have to parse the 1st one into the 2nd one.

%Message{
	date: date,
	text: "...",
	type: %MesageType{
					type: "command",
					selector: "/start",
				},
	from: %Telegram.User{
         first_name: "joel",
         id: 3132,
         last_name: "Ho",
         username: "Joel"
       },
	chat: %Telegram.Chat{
         id: 3132,
         type: "private",
         username: "JH"
       }
}
%Thanks{
	text: "text",
	type: %MesageType{
					type: "command",
					selector: "/start",
				},
	chat_id: 3132,
	from_user:  %User{
				username: "JH"
				first_name: "Joel"
			        last_name: "Ho"
			        chat_id: 3132
			},
	to_user: %User{
				username: "Luis"
				first_name: "Luis"
			        last_name: "Maxwell"
			        chat_id: 6789
			},
}

Marked As Solved

krstfk

krstfk

I don’t know if it’s the best/most idiomatic way of doing it but why not simply pattern match on the first struct and update the second with the new fields :

def thanks_from_message(%Message{text: text, from: from, type:type}, %Thanks{}= thanks) do
    %{thanks | chat_id: from.chat_id, text: text, type: type, from_user: from}
end

Where Next?

Popular in Questions Top

gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
Werner
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”: 14:57:30.512 [warn] ...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
Fl4m3Ph03n1x
Background Let’s assume I have a typical GenServer that receives messages as requests, does some operation in a DB and returns responses....
New
gonzofish
I’m currently trying to understand how to join three tables using Ecto. All the examples I’ve seen use 2, so maybe I’m just missing somet...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Other popular topics Top

yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
William
I would like to know that is there any online source for learning Phoenix Framework for building E-Commerce Store? Any advantage on build...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New

We're in Beta

About us Mission Statement