Создать связь при добавлении элемента с помощью Graphql

В моем проекте apollo, когда пользователь создает проект, он должен автоматически создать первую папку, связанную с ним.

Моя схема что-то вроде:

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")
}

Таким образом, идея заключается в том, что когда пользователь создает проект, он также создает начальную папку, пользователь может добавить дополнительные папки позже. Наивно, я хочу сделать что-то вроде:

mutation CreateProjectMutation($name: String!) {
  createProject(name: $name) {
    id
    name
  }

  createFolder(name: $name, $projectId: ?PROJECT_ID?) {
    id
    name
  }
}

Как правильно это сделать?

1 ответ

Решение

В этом случае вы можете использовать вложенную мутацию create, начав с createProject:

mutation CreateProjectMutation($name: String!) {
  createProject(
    name: $name
    folders: [{
      name: $name
    }]
  ) {
    id
    name
    folders {
      id
    }
  }
}

или же createFolder:

mutation CreateFolderMutation($name: String!) {
  createFolder(
    name: $name
    project: {
      name: $name
    }
  ) {
    id
    name
    project {
      id
    }
  }
}

Обратите внимание, что параметр называется folders а также projectсоответственно.

Другие вопросы по тегам