View Source BridgeEx.Graphql.LanguageConventions (bridge_ex v2.4.0)
This defines an adapter that supports GraphQL query documents in their conventional (in JS) camelCase notation, while allowing the schema to be defined using conventional (in Elixir) snake_case notation, and transforming the names as needed for lookups, results, and error messages.
For example, this document:
{
myUser: createUser(userId: 2) {
firstName
lastName
}
}
Would map to an internal schema that used the following names:
create_user
instead ofcreateUser
user_id
instead ofuserId
first_name
instead offirstName
last_name
instead oflastName
Likewise, the result of executing this (camelCase) query document against our (snake_case) schema would have its names transformed back into camelcase on the way out:
%{
data: %{
"myUser" => %{
"firstName" => "Joe",
"lastName" => "Black"
}
}
}
Note variables are a client-facing concern (they may be provided as parameters), so variable names should match the convention of the query document (eg, camelCase).
Summary
Functions
Callback implementation for Absinthe.Adapter.to_external_name/2
.
Converts a camelCase to snake_case
Functions
Callback implementation for Absinthe.Adapter.to_external_name/2
.
Converts a camelCase to snake_case
iex> to_internal_name("test", :read) "test"
iex> to_internal_name("testTTT", :read) "test_t_t_t"
iex> to_internal_name("testTest", :read) "test_test"
iex> to_internal_name("testTest1", :read) "test_test_1"
iex> to_internal_name("testTest11", :read) "test_test_11"
iex> to_internal_name("testTest11Pippo", :read) "test_test_11_pippo"
iex> to_internal_name("camelCase23Snake4344", :read) "camel_case_23_snake_4344"