Как я могу обусловить мутацию GraphQL на основе существования?

Я создаю схемы в GraphQl и тестирую их на Playground. Кажется, они отлично подходят для создания клуба, пользователя и команды, но я хочу иметь возможность создавать команду только в том случае, если клуб существует и, следовательно, может подключиться к клубу. Сейчас я могу создать команду без клуба, чего, конечно, не должно быть. При создании Team Mutation я также хочу остановить создание любого клуба, клуб должен существовать до любой мутации в команде.

Вот что у меня есть на данный момент для моих схем

type Club {
 id: ID! @unique
 name: String! @unique
 team: [Team!]! @relation(name: "TeamToClub", onDelete: CASCADE)
 admin: User! @relation(name: "UserToClub", onDelete: SET_NULL)
 }

type User {
  id: ID! @unique
  name: String!
  team: [Team!]! @relation(name: "TeamToUser", onDelete: SET_NULL)
  club: [Club!]! @relation(name: "UserToClub", onDelete: SET_NULL)
}

type Team {
 id: ID! @unique
 name: String!
 club: Club! @relation(name: "TeamToClub", onDelete: SET_NULL)
 creator: User! @relation(name: "TeamToUser", onDelete: SET_NULL)
 coach:[Coach!]! @relation(name: "CoachToTeam", onDelete: SET_NULL)
}

Вот мои мутации для создания пользователя

mutation {
  createUser(
    data:{
      name:"Jack Jones",
      email:"jack@example.com"
    }
  ){
    id
    name
  }
}

и создание команды..

mutation {
  createTeam(
    data:{
      title:"Barcelona FC"
      agegroup:"Under 12s",
      published: false,
      coachcreator:{
        connect:{
          id:"cka8qkd5h02dj0815m3odzh5s"
        }
      }
    }
  ){
    id
    title
    agegroup
    published
    coachcreator {
      name
    }
  }
}

оба работают без подключения к клубу.

Может ли кто-нибудь предложить возможное решение для обеспечения наличия условия, согласно которому команда может быть создана только тогда, когда клуб уже существует.

1 ответ

Странные мутации - похоже, они совершенно не относятся к типам.

Обычно create mutation возвращает созданный тип, например createUser возвращается User... и аргумент мутации - тип ввода (UserInput) - почти такой же формы, что и возвращаемый тип (без id).

Самый простой способ убедиться, что createTeam имеет правильное (существующее) клубное отношение - это определить клуб как обязательный аргумент мутации.

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