View Source BridgeEx.Graphql.LanguageConventions (bridge_ex v0.4.1)
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) underscore (snakecase) notation, and tranforming 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 (snakecase) 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).
Link to this section Summary
Functions
Callback implementation for Absinthe.Adapter.to_external_name/2
.
Converts a camelCase to snake_case
Link to this section 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"