В Prisma я хотел бы смоделировать следующее, но я не совсем уверен, как.
type Event {
id: ID! @unique
players: [User]! @relation(name: "EventPlayers")
teams: [Team]! @relation(name: "EventTeams")
...
}
type User {
id: ID! @unique
eventsPlayed: [Event]! @relation(name: "EventPlayers")
...
}
type Team {
id: ID! @unique
event: Event! @relation(name: "EventTeams")
members: [User]! @relation(name: ?????)
...
}
Ограничения
- Каждый
team member
должен быть вEvent.players
- Каждая
Event.player
может быть назначена только одной (или ни одной) команде
Вопрос
У меня такое чувство, что мне нужно много-Многие отношения здесь, но я изо всех сил пытаюсь понять это.Что я отношу Team.members
к ?????.Я даже правильно подхожу к этому?
Больше информации (если это полезно)
Я намерен создать интерфейс drag-n-drop для создания команд.Те, которые перечислены в Events.players
, но еще не назначены как Team.member
, будут в unassigned
сегменте.Перетаскивая их в команду, назначьте их как Team.member
.Но я хочу задать вопрос всем игрокам как events { players { id }}
и events { teams { members { id }}}
Обновление
Подумав об этом, я подумываю о другом способе решения этой проблемы.Вот обновленная схема, по которой я хотел бы услышать ваши мысли / отзывы.
type Event {
id: ID! @unique
users: [EventUser!]!
teams: [Team!]!
title: string
}
type EventUser {
event: Event!
user: User!
role: EventRole!
}
type User {
id: ID! @unique
events: [EventUser!]!
name: string
}
type Team {
event: Event!
members: [EventUser!]!
name: string
}
enum EventRole {
ADMIN
COORDINATOR
JUDGE
PLAYER
REVIEWER
SPONSOR
}