Reputation: 2234
In my apollo project, when a user creates a project it should automatically create the first folder associated with it.
My schema is something like:
type Project implements Node {
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
folders: [Folders!]! @relation(name: "ProjectFolders")
}
type Folder implements Node {
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
project: Project @relation(name: "ProjectFolders")
}
So the idea is when a user creates a project it will also create an initial folder, the user can add more folders later. Naïvely, I want to do something like:
mutation CreateProjectMutation($name: String!) {
createProject(name: $name) {
id
name
}
createFolder(name: $name, $projectId: ?PROJECT_ID?) {
id
name
}
}
What's the correct way to do it?
Upvotes: 0
Views: 802
Reputation: 7808
You can use a nested create mutation in this case, by either starting with createProject
:
mutation CreateProjectMutation($name: String!) {
createProject(
name: $name
folders: [{
name: $name
}]
) {
id
name
folders {
id
}
}
}
or createFolder
:
mutation CreateFolderMutation($name: String!) {
createFolder(
name: $name
project: {
name: $name
}
) {
id
name
project {
id
}
}
}
Note that the parameter is called folders
and project
, respectively.
Upvotes: 2