Skip to content

Commit

Permalink
Update absinthe_federation to v0.5.2 (#612)
Browse files Browse the repository at this point in the history
This version brings support for the @interfaceObject directive
  • Loading branch information
kzlsakal committed Apr 25, 2024
1 parent 696cc38 commit 463619e
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 30 deletions.
3 changes: 2 additions & 1 deletion implementations/absinthe-federation/.formatter.exs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[
import_deps: [:phoenix, :absinthe],
inputs: ["*.{ex,exs}", "{config,lib,test}/**/*.{ex,exs}"]
inputs: ["*.{ex,exs}", "{config,lib,test}/**/*.{ex,exs}"],
line_length: 120
]
65 changes: 38 additions & 27 deletions implementations/absinthe-federation/lib/products_web/schema.ex
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ defmodule ProductsWeb.Schema do
directive :link, url: "https://divvypay.com/test/v2.4", import: ["@custom"]

directive :link,
url: "https://specs.apollo.dev/federation/v2.1",
url: "https://specs.apollo.dev/federation/v2.3",
import: [
"@extends",
"@external",
Expand All @@ -51,7 +51,8 @@ defmodule ProductsWeb.Schema do
"@requires",
"@shareable",
"@tag",
"@composeDirective"
"@composeDirective",
"@interfaceObject"
]
end

Expand Down Expand Up @@ -117,7 +118,7 @@ defmodule ProductsWeb.Schema do
end

field :_resolve_reference, :deprecated_product do
resolve(&resolve_deprecated_product_reference/2)
resolve(&resolve_deprecated_product/2)
end
end

Expand Down Expand Up @@ -256,6 +257,23 @@ defmodule ProductsWeb.Schema do
end
end

@desc """
type Inventory @interfaceObject @key(fields: "id") {
id: ID! @external
deprecatedProducts: [DeprecatedProduct!]!
}
"""
object :inventory do
key_fields("id")
interface_object()

field :id, non_null(:id), do: external()

field :deprecated_products, non_null(list_of(non_null(:deprecated_product))) do
resolve &resolve_deprecated_products_for_inventory/3
end
end

defp resolve_product(_parent, %{id: id}, _ctx) do
{:ok, Enum.find(products(), &(&1.id == id))}
end
Expand Down Expand Up @@ -307,32 +325,12 @@ defmodule ProductsWeb.Schema do
end
end

defp resolve_deprecated_product_reference(
%{sku: "apollo-federation-v1", package: "@apollo/federation-v1"},
_ctx
) do
{:ok,
%DeprecatedProduct{
sku: "apollo-federation-v1",
package: "@apollo/federation-v1",
reason: "Migrate to Federation V2"
}}
defp resolve_deprecated_product(%{sku: sku}, _ctx) do
{:ok, Enum.find(deprecated_products(), &(&1.sku == sku))}
end

defp resolve_deprecated_product_reference(_args, _ctx) do
{:ok, nil}
end

defp resolve_deprecated_product(
%{sku: "apollo-federation-v1", package: "@apollo/federation-v1"},
_ctx
) do
{:ok,
%DeprecatedProduct{
sku: "apollo-federation-v1",
package: "@apollo/federation-v1",
reason: "Migrate to Federation V2"
}}
defp resolve_deprecated_product(%{package: package}, _ctx) do
{:ok, Enum.find(deprecated_products(), &(&1.package == package))}
end

defp resolve_deprecated_product(_args, _ctx) do
Expand All @@ -343,6 +341,10 @@ defmodule ProductsWeb.Schema do
{:ok, List.first(users())}
end

defp resolve_deprecated_products_for_inventory(%{__typename: "Inventory"} = _parent, _args, _ctx) do
{:ok, deprecated_products()}
end

defp products(),
do: [
%Product{
Expand All @@ -363,6 +365,15 @@ defmodule ProductsWeb.Schema do
}
]

defp deprecated_products(),
do: [
%DeprecatedProduct{
sku: "apollo-federation-v1",
package: "@apollo/federation-v1",
reason: "Migrate to Federation V2"
}
]

defp product_research(),
do: [
%ProductResearch{
Expand Down
4 changes: 2 additions & 2 deletions implementations/absinthe-federation/mix.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
%{
"absinthe": {:hex, :absinthe, "1.7.1", "aca6f64994f0914628429ddbdfbf24212747b51780dae189dd98909da911757b", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.2.2 or ~> 1.3.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c0c4dbd93881fa3bfbad255608234b104b877c2a901850c1fe8c53b408a72a57"},
"absinthe_federation": {:hex, :absinthe_federation, "0.5.0", "c2cd99f6e0f04c057f81b753b83be7a1ba0a5eccc2cc63e2168dbbe8355440c9", [:mix], [{:absinthe, "~> 1.7", [hex: :absinthe, repo: "hexpm", optional: false]}, {:dataloader, "~> 1.0.9 or ~> 2.0", [hex: :dataloader, repo: "hexpm", optional: false]}], "hexpm", "a2b1b512123bb691e466a7f625c2fae34bfe7c6bccd4f69de12e43c4bba44a6f"},
"absinthe": {:hex, :absinthe, "1.7.6", "0b897365f98d068cfcb4533c0200a8e58825a4aeeae6ec33633ebed6de11773b", [:mix], [{:dataloader, "~> 1.0.0 or ~> 2.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:opentelemetry_process_propagator, "~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e7626951ca5eec627da960615b51009f3a774765406ff02722b1d818f17e5778"},
"absinthe_federation": {:hex, :absinthe_federation, "0.5.2", "62bfc7cefccc719e5001c93dc142b141cc6aa8f3b96883b245a40778e9c50020", [:mix], [{:absinthe, "~> 1.7", [hex: :absinthe, repo: "hexpm", optional: false]}, {:dataloader, "~> 1.0.9 or ~> 2.0", [hex: :dataloader, repo: "hexpm", optional: false]}], "hexpm", "ad5c1d78bc91df431ac813cf3eeb2b356eaf81c4bda2d342d9204bece3c99509"},
"absinthe_plug": {:hex, :absinthe_plug, "1.5.8", "38d230641ba9dca8f72f1fed2dfc8abd53b3907d1996363da32434ab6ee5d6ab", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bbb04176647b735828861e7b2705465e53e2cf54ccf5a73ddd1ebd855f996e5a"},
"castore": {:hex, :castore, "1.0.0", "c25cd0794c054ebe6908a86820c8b92b5695814479ec95eeff35192720b71eec", [:mix], [], "hexpm", "577d0e855983a97ca1dfa33cbb8a3b6ece6767397ffb4861514343b078fc284b"},
"cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
Expand Down

0 comments on commit 463619e

Please sign in to comment.