Skip to content

Instantly share code, notes, and snippets.

View jorgevilaca82's full-sized avatar
🏠
Working from home

Jorge Vilaça jorgevilaca82

🏠
Working from home
View GitHub Profile
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@jorgevilaca82
jorgevilaca82 / error.ex
Created October 9, 2024 14:52
Error module
defmodule Error do
defstruct code: nil, message: nil, details: nil
@doc """
Creates a new error struct
## Usage:
iex> Error.new("E001", "This is an error")
defmodule ExternalUser do
use Ecto.Schema
import Ecto.Changeset
@primary_key false
embedded_schema do
field(:first_name, :string)
field(:last_name, :string)
end
@jorgevilaca82
jorgevilaca82 / external_routes.ex
Created April 26, 2024 15:49
map routes of an external service to use as phoenix routes
defmodule ExternalAPIRouter do
use Phoenix.Router
import Plug.Conn
import Phoenix.Controller
scope "/api/v1" do
get("me2", __MODULE__, :me)
get("product/:product_id", __MODULE__, :product_detail)
end
@jorgevilaca82
jorgevilaca82 / map_user_attrs.ex
Last active April 5, 2024 21:17
Elixir map user attributes to meet external service format
defmodule UserMapperFunctions do
def map_my_address(%{
address: address,
city: city,
province: province,
country: country,
postalCode: postalCode
}) do
"#{address}, #{city}, #{province}, #{country}, #{postalCode}"
end
@jorgevilaca82
jorgevilaca82 / shopping_cart_total_cost.py
Created December 13, 2023 21:31
3 ways of sum cart total cost
shopping_cart = [
{"item": "Apple", "price": 0.5, "quantity": 10},
{"item": "Milk", "price": 1.5, "quantity": 2},
{"item": "Bread", "price": 2.0, "quantity": 1}
]
def item_cost(item):
return item["price"] * item["quantity"]
sum(map(item_cost, shopping_cart))
@jorgevilaca82
jorgevilaca82 / service_module_switcher.exs
Created December 6, 2023 20:10
Elixir service module switcher
defmodule ServiceSwitcher do
defmacro __using__(opts \\ []) do
service_module_mapping = opts[:service_module_mapping]
quote do
@service_module_mapping unquote(service_module_mapping)
@services Keyword.keys(@service_module_mapping)
def get_service_module(service) when is_binary(service),
do: service |> String.to_atom() |> get_service_module()
@jorgevilaca82
jorgevilaca82 / T.ex
Last active August 15, 2023 19:41
How to rescue from Ecto.MultipleResultsError
defmodule T do
import Ecto.Query
alias MyApp.Repo
def test() do
from(s in "users", select: [:id]) |> Repo.one()
rescue
Ecto.MultipleResultsError -> IO.puts("Sorry. Things didn't go well.")
end
end