I have this piece of graphql schema (from Hasura):
input UserLogins_insert_input {
User: Users_obj_rel_insert_input
created: timestamptz
deleted: Boolean
timestamp: Int
updated: timestamptz
userId: String
}
Hasura should made those fields required, since they are indeed required (they are all NOT NULL in the database).
Then, I need to insert that entity:
mutation PushUserData(
$userLogins: [UserLogins_insert_input!]!
) {
insert_UserLogins(objects: $userLogins, on_conflict: {constraint: UserLogins_pkey}) {
affected_rows
}
}
When Variables$Mutation$PushUserData is created, the Input$UserLogins_insert_input is created with all fields as not required:
class Input$UserLogins_insert_input {
factory Input$UserLogins_insert_input({
Input$Users_obj_rel_insert_input? User,
DateTime? created,
bool? deleted,
int? timestamp,
DateTime? updated,
String? userId,
})
...
This is a problem, because when we create a new field in our local database, there is no compiler warning at all if we forget to add that field on the graphql.
So, a solution for this would be a build option that make the required keyword to be generated on these Input$ types, if we configure it with that option.
So, in build.yaml
targets:
$default:
builders:
graphql_codegen:
options:
input_type_primitives_gen_required: bool # only primitives, not nested inputs
...
Would generate that class as:
class Input$UserLogins_insert_input {
factory Input$UserLogins_insert_input({
Input$Users_obj_rel_insert_input? User,
required DateTime? created,
required bool? deleted,
required int? timestamp,
required DateTime? updated,
required String? userId,
})
...
That would make the compiler useful to alert us when something has changed on the query and we forget to specify those new fields in the mutations/queries.
I have this piece of graphql schema (from Hasura):
Hasura should made those fields required, since they are indeed required (they are all
NOT NULLin the database).Then, I need to insert that entity:
When
Variables$Mutation$PushUserDatais created, theInput$UserLogins_insert_inputis created with all fields as not required:This is a problem, because when we create a new field in our local database, there is no compiler warning at all if we forget to add that field on the graphql.
So, a solution for this would be a build option that make the
requiredkeyword to be generated on theseInput$types, if we configure it with that option.So, in
build.yamlWould generate that class as:
That would make the compiler useful to alert us when something has changed on the query and we forget to specify those new fields in the mutations/queries.