updated
This commit is contained in:
parent
c4c714e5ca
commit
b2d718738e
@ -113,6 +113,11 @@ model FaceitGameStat {
|
|||||||
@@index([game, elo])
|
@@index([game, elo])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum TeamJoinPolicy {
|
||||||
|
REQUEST
|
||||||
|
INVITE_ONLY
|
||||||
|
}
|
||||||
|
|
||||||
model Team {
|
model Team {
|
||||||
id String @id @default(uuid())
|
id String @id @default(uuid())
|
||||||
name String @unique
|
name String @unique
|
||||||
@ -137,6 +142,9 @@ model Team {
|
|||||||
schedulesAsTeamB Schedule[] @relation("ScheduleTeamB")
|
schedulesAsTeamB Schedule[] @relation("ScheduleTeamB")
|
||||||
|
|
||||||
mapVoteSteps MapVoteStep[] @relation("VoteStepTeam")
|
mapVoteSteps MapVoteStep[] @relation("VoteStepTeam")
|
||||||
|
|
||||||
|
// Default bleibt REQUEST
|
||||||
|
joinPolicy TeamJoinPolicy @default(REQUEST)
|
||||||
}
|
}
|
||||||
|
|
||||||
model TeamInvite {
|
model TeamInvite {
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
// /src/app/[locale]/components/NoTeamView.tsx
|
||||||
|
|
||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import { useEffect, useMemo, useState } from 'react'
|
import { useEffect, useMemo, useState } from 'react'
|
||||||
@ -24,6 +26,7 @@ const eqTeam = (a: Team, b: Team) => {
|
|||||||
if ((a.name ?? '') !== (b.name ?? '')) return false
|
if ((a.name ?? '') !== (b.name ?? '')) return false
|
||||||
if ((a.logo ?? '') !== (b.logo ?? '')) return false
|
if ((a.logo ?? '') !== (b.logo ?? '')) return false
|
||||||
if ((a.leader as any) !== (b.leader as any)) return false
|
if ((a.leader as any) !== (b.leader as any)) return false
|
||||||
|
if (a.joinPolicy !== b.joinPolicy) return false
|
||||||
return (
|
return (
|
||||||
eqPlayers(sortPlayers(a.activePlayers), sortPlayers(b.activePlayers)) &&
|
eqPlayers(sortPlayers(a.activePlayers), sortPlayers(b.activePlayers)) &&
|
||||||
eqPlayers(sortPlayers(a.inactivePlayers), sortPlayers(b.inactivePlayers))
|
eqPlayers(sortPlayers(a.inactivePlayers), sortPlayers(b.inactivePlayers))
|
||||||
@ -47,7 +50,7 @@ function parseTeamsResponse(raw: any): Team[] {
|
|||||||
export default function NoTeamView({ initialTeams, initialInvitationMap }: Props) {
|
export default function NoTeamView({ initialTeams, initialInvitationMap }: Props) {
|
||||||
const { data: session } = useSession()
|
const { data: session } = useSession()
|
||||||
const currentSteamId = session?.user?.steamId || ''
|
const currentSteamId = session?.user?.steamId || ''
|
||||||
const { lastEvent } = useSSEStore()
|
const { connect, isConnected, lastEvent } = useSSEStore()
|
||||||
|
|
||||||
const [teams, setTeams] = useState<Team[]>(initialTeams)
|
const [teams, setTeams] = useState<Team[]>(initialTeams)
|
||||||
const [teamToInvitationId, setTeamToInvitationId] = useState<Record<string, string>>(initialInvitationMap)
|
const [teamToInvitationId, setTeamToInvitationId] = useState<Record<string, string>>(initialInvitationMap)
|
||||||
@ -82,7 +85,12 @@ export default function NoTeamView({ initialTeams, initialInvitationMap }: Props
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (currentSteamId && !isConnected) connect(currentSteamId)
|
||||||
|
}, [currentSteamId, isConnected, connect])
|
||||||
|
|
||||||
useEffect(() => { fetchTeamsAndInvitations() }, [])
|
useEffect(() => { fetchTeamsAndInvitations() }, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!lastEvent) return
|
if (!lastEvent) return
|
||||||
const { type, payload } = lastEvent
|
const { type, payload } = lastEvent
|
||||||
|
|||||||
@ -1,11 +1,15 @@
|
|||||||
// /src/app/components/TeamCard.tsx
|
// /src/app/components/TeamCard.tsx
|
||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import { useState, useMemo } from 'react'
|
import { useState, useMemo, useEffect } from 'react'
|
||||||
import { useRouter } from 'next/navigation'
|
import { useRouter } from 'next/navigation'
|
||||||
import Button from './Button'
|
import Button from './Button'
|
||||||
import TeamPremierRankBadge from './TeamPremierRankBadge'
|
import TeamPremierRankBadge from './TeamPremierRankBadge'
|
||||||
import type { Team } from '../../../types/team'
|
import type { Team, TeamJoinPolicy } from '../../../types/team'
|
||||||
|
|
||||||
|
// ⬇️ NEU: SSE-Hooks / Type-Guard
|
||||||
|
import { useSSEStore } from '@/lib/useSSEStore'
|
||||||
|
import { isSseEventType } from '@/lib/sseEvents'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
team: Team
|
team: Team
|
||||||
@ -13,8 +17,6 @@ type Props = {
|
|||||||
invitationId?: string
|
invitationId?: string
|
||||||
onUpdateInvitation: (teamId: string, newValue: string | null | 'pending') => void
|
onUpdateInvitation: (teamId: string, newValue: string | null | 'pending') => void
|
||||||
adminMode?: boolean
|
adminMode?: boolean
|
||||||
/** (historisch) Ob Join-Anfragen grundsätzlich erlaubt sind.
|
|
||||||
* Mehrere Teams sind jetzt erlaubt – diese Prop wird nicht mehr zum Sperren verwendet. */
|
|
||||||
canRequestJoin?: boolean
|
canRequestJoin?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,43 +26,84 @@ export default function TeamCard({
|
|||||||
invitationId,
|
invitationId,
|
||||||
onUpdateInvitation,
|
onUpdateInvitation,
|
||||||
adminMode = false,
|
adminMode = false,
|
||||||
canRequestJoin = true, // bleibt für Abwärtskompatibilität erhalten, hat aber keinen Einfluss mehr auf disabled
|
canRequestJoin = true,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const [joining, setJoining] = useState(false)
|
const [joining, setJoining] = useState(false)
|
||||||
|
|
||||||
const isRequested = Boolean(invitationId)
|
// ⬇️ NEU: SSE
|
||||||
|
const { connect, lastEvent, isConnected } = useSSEStore()
|
||||||
|
|
||||||
|
// ⬇️ NEU: lokale, “wirksame” Policy – startet mit Prop
|
||||||
|
const [effectivePolicy, setEffectivePolicy] = useState<TeamJoinPolicy>(team.joinPolicy)
|
||||||
|
|
||||||
|
// Wenn sich Props ändern (neues Team oder Server-Refetch), Policy nachziehen
|
||||||
|
useEffect(() => {
|
||||||
|
setEffectivePolicy(team.joinPolicy)
|
||||||
|
}, [team.id, team.joinPolicy])
|
||||||
|
|
||||||
|
// SSE-Verbindung herstellen
|
||||||
|
useEffect(() => {
|
||||||
|
if (!currentUserSteamId) return
|
||||||
|
if (!isConnected) connect(currentUserSteamId)
|
||||||
|
}, [currentUserSteamId, isConnected, connect])
|
||||||
|
|
||||||
|
// Auf team-updated hören und ggf. Policy übernehmen
|
||||||
|
useEffect(() => {
|
||||||
|
if (!lastEvent || !isSseEventType(lastEvent.type)) return
|
||||||
|
if (lastEvent.type !== 'team-updated') return
|
||||||
|
|
||||||
|
const payload = lastEvent.payload ?? {}
|
||||||
|
if (payload.teamId !== team.id) return
|
||||||
|
|
||||||
|
const jp = payload.joinPolicy as TeamJoinPolicy | undefined
|
||||||
|
if (jp === 'REQUEST' || jp === 'INVITE_ONLY') {
|
||||||
|
setEffectivePolicy(jp)
|
||||||
|
}
|
||||||
|
}, [lastEvent, team.id])
|
||||||
|
|
||||||
|
// ── Stati ableiten (jetzt von effectivePolicy!)
|
||||||
|
const isInviteOnly = effectivePolicy === 'INVITE_ONLY'
|
||||||
|
const hasRealInvitation = Boolean(invitationId && invitationId !== 'pending')
|
||||||
|
const hasPendingRequest = invitationId === 'pending'
|
||||||
|
const isRequested = hasRealInvitation || hasPendingRequest
|
||||||
|
|
||||||
// Bin ich bereits in DIESEM Team (Leader, aktiv oder inaktiv)?
|
|
||||||
const isMemberOfThisTeam = useMemo(() => {
|
const isMemberOfThisTeam = useMemo(() => {
|
||||||
const inActive = (team.activePlayers ?? []).some(p => String(p.steamId) === String(currentUserSteamId))
|
const inActive = (team.activePlayers ?? []).some(p => String(p.steamId) === String(currentUserSteamId))
|
||||||
const inInactive = (team.inactivePlayers ?? []).some(p => String(p.steamId) === String(currentUserSteamId))
|
const inInactive = (team.inactivePlayers ?? []).some(p => String(p.steamId) === String(currentUserSteamId))
|
||||||
// robust: leader?.steamId ODER leaderId unterstützen
|
const isLeader = team.leader?.steamId && String(team.leader.steamId) === String(currentUserSteamId)
|
||||||
const leaderSteamId = team.leader?.steamId ?? (team as any).leaderId
|
|
||||||
const isLeader = leaderSteamId && String(leaderSteamId) === String(currentUserSteamId)
|
|
||||||
return Boolean(inActive || inInactive || isLeader)
|
return Boolean(inActive || inInactive || isLeader)
|
||||||
}, [team, currentUserSteamId])
|
}, [team, currentUserSteamId])
|
||||||
|
|
||||||
// ❗️Mehrere Teams erlaubt → NICHT mehr wegen "hat schon Team" blocken
|
const isDisabled =
|
||||||
// Gesperrt nur, wenn bereits Mitglied DIESES Teams oder Request läuft
|
joining ||
|
||||||
const isDisabled = joining || isMemberOfThisTeam
|
isMemberOfThisTeam ||
|
||||||
|
(isInviteOnly && !hasRealInvitation && !hasPendingRequest)
|
||||||
|
|
||||||
const handleClick = async () => {
|
const handleClick = async () => {
|
||||||
if (joining || isDisabled) return
|
if (joining || isDisabled) return
|
||||||
setJoining(true)
|
setJoining(true)
|
||||||
try {
|
try {
|
||||||
if (isRequested) {
|
if (hasRealInvitation) {
|
||||||
await fetch('/api/user/invitations/reject', {
|
await fetch('/api/user/invitations/reject', {
|
||||||
method : 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body : JSON.stringify({ invitationId }),
|
body: JSON.stringify({ invitationId }),
|
||||||
|
})
|
||||||
|
onUpdateInvitation(team.id, null)
|
||||||
|
} else if (hasPendingRequest) {
|
||||||
|
await fetch('/api/user/invitations/revoke', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ teamId: team.id, type: 'team-join-request' }),
|
||||||
})
|
})
|
||||||
onUpdateInvitation(team.id, null)
|
onUpdateInvitation(team.id, null)
|
||||||
} else {
|
} else {
|
||||||
|
if (isInviteOnly) return
|
||||||
await fetch('/api/team/request-join', {
|
await fetch('/api/team/request-join', {
|
||||||
method : 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body : JSON.stringify({ teamId: team.id }),
|
body: JSON.stringify({ teamId: team.id }),
|
||||||
})
|
})
|
||||||
onUpdateInvitation(team.id, 'pending')
|
onUpdateInvitation(team.id, 'pending')
|
||||||
}
|
}
|
||||||
@ -73,26 +116,21 @@ export default function TeamCard({
|
|||||||
|
|
||||||
const targetHref = adminMode ? `/admin/teams/${team.id}` : `/team/${team.id}`
|
const targetHref = adminMode ? `/admin/teams/${team.id}` : `/team/${team.id}`
|
||||||
|
|
||||||
// Label & Farbe abhängig vom Status
|
const buttonLabel = joining ? (
|
||||||
const buttonLabel = joining
|
<>
|
||||||
? (
|
<span className="animate-spin inline-block size-4 border-[3px] border-current border-t-transparent rounded-full mr-1" />
|
||||||
<>
|
Lädt
|
||||||
<span
|
</>
|
||||||
className="animate-spin inline-block size-4 border-[3px] border-current border-t-transparent rounded-full mr-1"
|
) : isMemberOfThisTeam ? 'Schon Mitglied'
|
||||||
role="status"
|
: hasRealInvitation ? 'Einladung ablehnen'
|
||||||
aria-label="loading"
|
: hasPendingRequest ? 'Angefragt (zurückziehen)'
|
||||||
/>
|
: isInviteOnly ? 'Nur Einladungen'
|
||||||
Lädt
|
: 'Beitritt anfragen'
|
||||||
</>
|
|
||||||
)
|
|
||||||
: isMemberOfThisTeam
|
|
||||||
? 'Schon Mitglied'
|
|
||||||
: isRequested
|
|
||||||
? 'Angefragt (zurückziehen)'
|
|
||||||
: 'Beitritt anfragen'
|
|
||||||
|
|
||||||
const buttonColor =
|
const buttonColor =
|
||||||
isDisabled ? 'gray' : (isRequested ? 'gray' : 'blue')
|
hasRealInvitation ? 'red' :
|
||||||
|
isDisabled ? 'gray' :
|
||||||
|
(isRequested ? 'gray' : 'blue')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// TeamMemberView.tsx
|
// /src/app/[locale]/components/TeamMemberView.tsx
|
||||||
|
|
||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
@ -12,14 +12,13 @@ import SortableMiniCard from './SortableMiniCard'
|
|||||||
import LeaveTeamModal from './LeaveTeamModal'
|
import LeaveTeamModal from './LeaveTeamModal'
|
||||||
import InvitePlayersModal from './InvitePlayersModal'
|
import InvitePlayersModal from './InvitePlayersModal'
|
||||||
import Modal from './Modal'
|
import Modal from './Modal'
|
||||||
import type { Player, InvitedPlayer } from '@/types/team'
|
import type { Player, InvitedPlayer, Team, TeamJoinPolicy } from '@/types/team'
|
||||||
import { AnimatePresence, motion } from 'framer-motion'
|
import { AnimatePresence, motion } from 'framer-motion'
|
||||||
import { leaveTeam, reloadTeam, renameTeam } from '@/lib/sse-actions'
|
import { leaveTeam, reloadTeam, renameTeam } from '@/lib/sse-actions'
|
||||||
import Button from './Button'
|
import Button from './Button'
|
||||||
import NextImage from 'next/image'
|
import NextImage from 'next/image'
|
||||||
import TeamPremierRankBadge from './TeamPremierRankBadge'
|
import TeamPremierRankBadge from './TeamPremierRankBadge'
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
import { Team } from '../../../types/team'
|
|
||||||
import { useTeamStore } from '@/lib/stores'
|
import { useTeamStore } from '@/lib/stores'
|
||||||
import { useSSEStore } from '@/lib/useSSEStore'
|
import { useSSEStore } from '@/lib/useSSEStore'
|
||||||
import {
|
import {
|
||||||
@ -59,6 +58,9 @@ export default function TeamMemberView({
|
|||||||
const { team: storeTeam, setTeam } = useTeamStore()
|
const { team: storeTeam, setTeam } = useTeamStore()
|
||||||
const team = teamProp ?? storeTeam
|
const team = teamProp ?? storeTeam
|
||||||
if (!team) return null
|
if (!team) return null
|
||||||
|
|
||||||
|
const teamId = team.id
|
||||||
|
const teamLeaderSteamId = team.leader?.steamId ?? ''
|
||||||
|
|
||||||
const RELEVANT: ReadonlySet<SSEEventType> = new Set([...TEAM_EVENTS, ...SELF_EVENTS])
|
const RELEVANT: ReadonlySet<SSEEventType> = new Set([...TEAM_EVENTS, ...SELF_EVENTS])
|
||||||
|
|
||||||
@ -85,6 +87,12 @@ export default function TeamMemberView({
|
|||||||
const [editedName, setEditedName] = useState(team.name || '')
|
const [editedName, setEditedName] = useState(team.name || '')
|
||||||
const [saveSuccess, setSaveSuccess] = useState(false)
|
const [saveSuccess, setSaveSuccess] = useState(false)
|
||||||
|
|
||||||
|
const [joinPolicy, setJoinPolicy] = useState<TeamJoinPolicy>(
|
||||||
|
(team as any).joinPolicy ?? 'REQUEST'
|
||||||
|
)
|
||||||
|
const [savingPolicy, setSavingPolicy] = useState(false)
|
||||||
|
const [policySaved, setPolicySaved] = useState(false)
|
||||||
|
|
||||||
const [inviteKey, setInviteKey] = useState(0)
|
const [inviteKey, setInviteKey] = useState(0)
|
||||||
const openInvite = () => {
|
const openInvite = () => {
|
||||||
setInviteKey(k => k + 1) // erzwingt frischen Mount
|
setInviteKey(k => k + 1) // erzwingt frischen Mount
|
||||||
@ -121,6 +129,10 @@ export default function TeamMemberView({
|
|||||||
return aa === bb
|
return aa === bb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setJoinPolicy(((team as any)?.joinPolicy ?? 'REQUEST') as TeamJoinPolicy)
|
||||||
|
}, [team?.id, (team as any)?.joinPolicy])
|
||||||
|
|
||||||
// Team-Listen lokal synchronisieren
|
// Team-Listen lokal synchronisieren
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!team) return
|
if (!team) return
|
||||||
@ -148,7 +160,7 @@ export default function TeamMemberView({
|
|||||||
|
|
||||||
// Relevante SSE-Events
|
// Relevante SSE-Events
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!lastEvent || !team?.id) return
|
if (!lastEvent || !teamId) return
|
||||||
if (!isSseEventType(lastEvent.type)) return
|
if (!isSseEventType(lastEvent.type)) return
|
||||||
const payload = lastEvent.payload ?? {}
|
const payload = lastEvent.payload ?? {}
|
||||||
|
|
||||||
@ -169,7 +181,7 @@ export default function TeamMemberView({
|
|||||||
if (payload.teamId && payload.teamId !== team.id) return
|
if (payload.teamId && payload.teamId !== team.id) return
|
||||||
|
|
||||||
;(async () => {
|
;(async () => {
|
||||||
const updated = await reloadTeam(team.id)
|
const updated = await reloadTeam(teamId)
|
||||||
if (!updated) return
|
if (!updated) return
|
||||||
setTeam(updated)
|
setTeam(updated)
|
||||||
setEditedName(updated.name || '')
|
setEditedName(updated.name || '')
|
||||||
@ -188,7 +200,7 @@ export default function TeamMemberView({
|
|||||||
setInvitedPlayers(nextInvited)
|
setInvitedPlayers(nextInvited)
|
||||||
setRemountKey(k => k + 1)
|
setRemountKey(k => k + 1)
|
||||||
})()
|
})()
|
||||||
}, [lastEvent, team?.id, setTeam])
|
}, [lastEvent, teamId, setTeam])
|
||||||
|
|
||||||
const handleDragStart = (event: any) => {
|
const handleDragStart = (event: any) => {
|
||||||
const id = event.active.id as string
|
const id = event.active.id as string
|
||||||
@ -202,6 +214,31 @@ export default function TeamMemberView({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const [showPolicyMenu, setShowPolicyMenu] = useState(false)
|
||||||
|
const policyMenuRef = useRef<HTMLDivElement>(null)
|
||||||
|
|
||||||
|
const applyPolicy = async (p: TeamJoinPolicy) => {
|
||||||
|
if (p === joinPolicy) { setShowPolicyMenu(false); return }
|
||||||
|
setJoinPolicy(p) // optimistisch
|
||||||
|
await saveJoinPolicy(p) // serverseitig speichern
|
||||||
|
setShowPolicyMenu(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!showPolicyMenu) return
|
||||||
|
const onDocClick = (e: MouseEvent) => {
|
||||||
|
if (!policyMenuRef.current) return
|
||||||
|
if (!policyMenuRef.current.contains(e.target as Node)) setShowPolicyMenu(false)
|
||||||
|
}
|
||||||
|
const onEsc = (e: KeyboardEvent) => { if (e.key === 'Escape') setShowPolicyMenu(false) }
|
||||||
|
document.addEventListener('mousedown', onDocClick)
|
||||||
|
document.addEventListener('keydown', onEsc)
|
||||||
|
return () => {
|
||||||
|
document.removeEventListener('mousedown', onDocClick)
|
||||||
|
document.removeEventListener('keydown', onEsc)
|
||||||
|
}
|
||||||
|
}, [showPolicyMenu])
|
||||||
|
|
||||||
const updateTeamMembers = async (teamId: string, active: Player[], inactive: Player[]) => {
|
const updateTeamMembers = async (teamId: string, active: Player[], inactive: Player[]) => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/api/team/update-players', {
|
const res = await fetch('/api/team/update-players', {
|
||||||
@ -290,7 +327,7 @@ export default function TeamMemberView({
|
|||||||
setActivePlayers(nextActive)
|
setActivePlayers(nextActive)
|
||||||
setInactivePlayers(nextInactive)
|
setInactivePlayers(nextInactive)
|
||||||
|
|
||||||
updateTeamMembers(team.id, nextActive, nextInactive).catch(console.error)
|
updateTeamMembers(teamId, nextActive, nextInactive).catch(console.error)
|
||||||
|
|
||||||
setSaveSuccess(true)
|
setSaveSuccess(true)
|
||||||
setTimeout(()=>setSaveSuccess(false), 3000)
|
setTimeout(()=>setSaveSuccess(false), 3000)
|
||||||
@ -324,7 +361,7 @@ export default function TeamMemberView({
|
|||||||
await fetch('/api/team/kick', {
|
await fetch('/api/team/kick', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ steamId: kickCandidate.steamId, teamId: team.id }),
|
body: JSON.stringify({ steamId: kickCandidate.steamId, teamId }),
|
||||||
})
|
})
|
||||||
await updateTeamMembers(team.id, newActive, newInactive)
|
await updateTeamMembers(team.id, newActive, newInactive)
|
||||||
setKickCandidate(null)
|
setKickCandidate(null)
|
||||||
@ -335,7 +372,7 @@ export default function TeamMemberView({
|
|||||||
const res = await fetch('/api/team/transfer-leader', {
|
const res = await fetch('/api/team/transfer-leader', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ teamId: team.id, newLeaderSteamId: newLeaderId }),
|
body: JSON.stringify({ teamId, newLeaderSteamId: newLeaderId }),
|
||||||
})
|
})
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
const data = await res.json()
|
const data = await res.json()
|
||||||
@ -355,6 +392,36 @@ export default function TeamMemberView({
|
|||||||
square?: boolean; // center-crop auf Quadrat
|
square?: boolean; // center-crop auf Quadrat
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async function saveJoinPolicy(next: TeamJoinPolicy = joinPolicy) {
|
||||||
|
const prev = joinPolicy
|
||||||
|
try {
|
||||||
|
setSavingPolicy(true)
|
||||||
|
const res = await fetch('/api/team/update-join-policy', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
credentials: 'same-origin', // oder 'include' – same-origin reicht bei relativer URL
|
||||||
|
cache: 'no-store',
|
||||||
|
body: JSON.stringify({ teamId, joinPolicy: next }),
|
||||||
|
})
|
||||||
|
if (!res.ok) {
|
||||||
|
const data = await res.json().catch(() => ({}))
|
||||||
|
throw new Error(data?.message ?? `Speichern fehlgeschlagen (${res.status})`)
|
||||||
|
}
|
||||||
|
setPolicySaved(true)
|
||||||
|
setTimeout(() => setPolicySaved(false), 2000)
|
||||||
|
|
||||||
|
const updated = await reloadTeam(teamId)
|
||||||
|
if (updated) setTeam(updated)
|
||||||
|
} catch (e) {
|
||||||
|
// 🔙 Optimistisches Set zurückrollen
|
||||||
|
setJoinPolicy(prev)
|
||||||
|
console.error(e)
|
||||||
|
alert((e as Error).message || 'Speichern fehlgeschlagen')
|
||||||
|
} finally {
|
||||||
|
setSavingPolicy(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function canEncode(mime: string): Promise<boolean> {
|
async function canEncode(mime: string): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
// OffscreenCanvas hat die zuverlässigste Blob-API
|
// OffscreenCanvas hat die zuverlässigste Blob-API
|
||||||
@ -480,7 +547,7 @@ export default function TeamMemberView({
|
|||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('logo', file)
|
formData.append('logo', file)
|
||||||
formData.append('teamId', team!.id)
|
formData.append('teamId', teamId)
|
||||||
|
|
||||||
const xhr = new XMLHttpRequest()
|
const xhr = new XMLHttpRequest()
|
||||||
xhr.open('POST', '/api/team/upload-logo')
|
xhr.open('POST', '/api/team/upload-logo')
|
||||||
@ -510,7 +577,7 @@ export default function TeamMemberView({
|
|||||||
|
|
||||||
if (!adminMode && !currentUserSteamId) return null
|
if (!adminMode && !currentUserSteamId) return null
|
||||||
|
|
||||||
const manageSteam: string = adminMode ? (team.leader?.steamId ?? '') : currentUserSteamId
|
const manageSteam: string = adminMode ? teamLeaderSteamId : currentUserSteamId
|
||||||
|
|
||||||
const renderMemberList = (players: Player[]) => (
|
const renderMemberList = (players: Player[]) => (
|
||||||
<AnimatePresence>
|
<AnimatePresence>
|
||||||
@ -533,7 +600,7 @@ export default function TeamMemberView({
|
|||||||
onKick={setKickCandidate}
|
onKick={setKickCandidate}
|
||||||
onPromote={() => setPromoteCandidate(player)}
|
onPromote={() => setPromoteCandidate(player)}
|
||||||
currentUserSteamId={manageSteam}
|
currentUserSteamId={manageSteam}
|
||||||
teamLeaderSteamId={team.leader?.steamId}
|
teamLeaderSteamId={teamLeaderSteamId}
|
||||||
isAdmin={adminMode}
|
isAdmin={adminMode}
|
||||||
isDraggingGlobal={isDragging}
|
isDraggingGlobal={isDragging}
|
||||||
hideOverlay={isDragging}
|
hideOverlay={isDragging}
|
||||||
@ -695,20 +762,83 @@ export default function TeamMemberView({
|
|||||||
</h2>
|
</h2>
|
||||||
<TeamPremierRankBadge players={activePlayers} />
|
<TeamPremierRankBadge players={activePlayers} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Beitritts-Einstellungen (nur Leader/Admin) */}
|
||||||
{canManage && (
|
{canManage && (
|
||||||
<Button
|
<>
|
||||||
title="Bearbeiten"
|
<Button
|
||||||
color="blue"
|
title="Bearbeiten"
|
||||||
size="sm"
|
color="blue"
|
||||||
variant="soft"
|
size="sm"
|
||||||
onClick={() => {
|
variant="soft"
|
||||||
setIsEditingName(true)
|
onClick={() => {
|
||||||
setEditedName(team.name || '')
|
setIsEditingName(true)
|
||||||
}}
|
setEditedName(team.name || '')
|
||||||
className="h-[34px] px-3 flex items-center justify-center"
|
}}
|
||||||
>
|
className="h-[34px] px-3 flex items-center justify-center"
|
||||||
Bearbeiten
|
>
|
||||||
</Button>
|
Bearbeiten
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
{/* 🔽 Dezente Policy-Pill */}
|
||||||
|
<div className="relative" ref={policyMenuRef}>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => setShowPolicyMenu(v => !v)}
|
||||||
|
className="h-[32px] px-2.5 rounded-full text-xs border border-gray-300 dark:border-neutral-600
|
||||||
|
bg-white dark:bg-neutral-800 text-gray-700 dark:text-neutral-200
|
||||||
|
hover:bg-gray-100 hover:dark:bg-neutral-700 inline-flex items-center gap-1"
|
||||||
|
title="Beitrittsmodus ändern"
|
||||||
|
>
|
||||||
|
{joinPolicy === 'INVITE_ONLY' ? (
|
||||||
|
<svg className="w-3.5 h-3.5" viewBox="0 0 24 24" fill="currentColor">
|
||||||
|
<path d="M17 8V7a5 5 0 1 0-10 0v1H5v12h14V8h-2Zm-8 0V7a3 3 0 1 1 6 0v1H9Zm-2 2h10v8H7v-8Z"/>
|
||||||
|
</svg>
|
||||||
|
) : (
|
||||||
|
<svg className="w-3.5 h-3.5" viewBox="0 0 24 24" fill="currentColor">
|
||||||
|
<path d="M12 2a5 5 0 0 0-5 5v1H5v12h14V8h-2V7a5 5 0 0 0-5-5Zm-3 6V7a3 3 0 1 1 6 0v1H9Z"/>
|
||||||
|
</svg>
|
||||||
|
)}
|
||||||
|
<span>{joinPolicy === 'INVITE_ONLY' ? 'Nur Einladung' : 'Mit Genehmigung'}</span>
|
||||||
|
{savingPolicy && (
|
||||||
|
<span className="ml-1 inline-block size-3 border-2 border-current border-t-transparent rounded-full animate-spin" />
|
||||||
|
)}
|
||||||
|
{policySaved && !savingPolicy && <span className="ml-1 text-green-600">✓</span>}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
{showPolicyMenu && (
|
||||||
|
<div className="absolute right-0 z-10 mt-1 w-56 rounded-md border border-gray-200 dark:border-neutral-700
|
||||||
|
bg-white dark:bg-neutral-800 shadow-lg p-1">
|
||||||
|
<button
|
||||||
|
onClick={() => applyPolicy('REQUEST')}
|
||||||
|
className={`w-full text-left px-2.5 py-2 rounded-md text-sm
|
||||||
|
${joinPolicy === 'REQUEST'
|
||||||
|
? 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-200'
|
||||||
|
: 'hover:bg-gray-100 dark:hover:bg-neutral-700 text-gray-800 dark:text-neutral-200'}`}
|
||||||
|
>
|
||||||
|
<div className="font-medium">Mit Genehmigung</div>
|
||||||
|
<div className="text-xs text-gray-500 dark:text-neutral-400">
|
||||||
|
Spieler stellen eine Anfrage; Leader entscheidet.
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
onClick={() => applyPolicy('INVITE_ONLY')}
|
||||||
|
className={`w-full text-left px-2.5 py-2 rounded-md text-sm
|
||||||
|
${joinPolicy === 'INVITE_ONLY'
|
||||||
|
? 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-200'
|
||||||
|
: 'hover:bg-gray-100 dark:hover:bg-neutral-700 text-gray-800 dark:text-neutral-200'}`}
|
||||||
|
>
|
||||||
|
<div className="font-medium">Nur Einladung</div>
|
||||||
|
<div className="text-xs text-gray-500 dark:text-neutral-400">
|
||||||
|
Beitritt nur per Einladung.
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
{/* 🔼 Ende Policy-Pill */}
|
||||||
|
</>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
@ -738,7 +868,7 @@ export default function TeamMemberView({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DndContext
|
<DndContext
|
||||||
key={`dnd-${team.id}-${remountKey}`}
|
key={`dnd-${teamId}-${remountKey}`}
|
||||||
collisionDetection={closestCenter}
|
collisionDetection={closestCenter}
|
||||||
onDragStart={handleDragStart}
|
onDragStart={handleDragStart}
|
||||||
onDragEnd={handleDragEnd}
|
onDragEnd={handleDragEnd}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export default function SettingsLayout({ children }: { children: React.ReactNode
|
|||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
{/* rechte Spalte scrollt */}
|
{/* rechte Spalte scrollt */}
|
||||||
<div ref={scrollRef} className="min-h-0 p-4">
|
<div ref={scrollRef} className="min-h-0 p-4 overflow-auto">
|
||||||
<main className="min-h-0">{children}</main>
|
<main className="min-h-0">{children}</main>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// /src/app/api/team/[teamId]/route.ts
|
// /src/app/api/team/[teamId]/route.ts
|
||||||
import { NextResponse, type NextRequest } from 'next/server'
|
import { NextResponse, type NextRequest } from 'next/server'
|
||||||
import { prisma } from '@/lib/prisma'
|
import { prisma } from '@/lib/prisma'
|
||||||
import type { Player, InvitedPlayer } from '@/types/team'
|
import type { Player, InvitedPlayer, TeamJoinPolicy } from '@/types/team'
|
||||||
|
|
||||||
export const dynamic = 'force-dynamic'
|
export const dynamic = 'force-dynamic'
|
||||||
export const revalidate = 0
|
export const revalidate = 0
|
||||||
@ -94,6 +94,7 @@ export async function GET(
|
|||||||
logo: team.logo,
|
logo: team.logo,
|
||||||
leader, // ⬅ jetzt Player statt String
|
leader, // ⬅ jetzt Player statt String
|
||||||
createdAt: team.createdAt,
|
createdAt: team.createdAt,
|
||||||
|
joinPolicy: (team.joinPolicy ?? 'REQUEST') as TeamJoinPolicy,
|
||||||
activePlayers,
|
activePlayers,
|
||||||
inactivePlayers,
|
inactivePlayers,
|
||||||
invitedPlayers,
|
invitedPlayers,
|
||||||
|
|||||||
@ -7,78 +7,100 @@ import { sendServerSSEMessage } from '@/lib/sse-server-client'
|
|||||||
|
|
||||||
export async function POST(req: NextRequest) {
|
export async function POST(req: NextRequest) {
|
||||||
try {
|
try {
|
||||||
/* ───────────────── Session prüfen ────────────────────── */
|
// ── Session ──────────────────────────────────────────────
|
||||||
const session = await getServerSession(authOptions(req))
|
const session = await getServerSession(authOptions(req))
|
||||||
if (!session?.user?.steamId) {
|
if (!session?.user?.steamId) {
|
||||||
return NextResponse.json({ message: 'Nicht eingeloggt' }, { status: 401 })
|
return NextResponse.json({ message: 'Nicht eingeloggt' }, { status: 401 })
|
||||||
}
|
}
|
||||||
const requesterSteamId = session.user.steamId
|
const requesterSteamId = session.user.steamId
|
||||||
|
|
||||||
/* ───────────────── Body validieren ────────────────────── */
|
// ── Body ────────────────────────────────────────────────
|
||||||
const { teamId } = await req.json()
|
const { teamId } = await req.json()
|
||||||
if (!teamId) {
|
if (!teamId) {
|
||||||
return NextResponse.json({ message: 'teamId fehlt' }, { status: 400 })
|
return NextResponse.json({ message: 'teamId fehlt' }, { status: 400 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ───────────────── Team holen ─────────────────────────── */
|
// ── Daten holen ─────────────────────────────────────────
|
||||||
const team = await prisma.team.findUnique({ where: { id: teamId } })
|
const [team, requester] = await Promise.all([
|
||||||
|
prisma.team.findUnique({
|
||||||
|
where: { id: teamId },
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
leaderId: true,
|
||||||
|
joinPolicy: true,
|
||||||
|
activePlayers: true,
|
||||||
|
inactivePlayers: true,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
prisma.user.findUnique({
|
||||||
|
where: { steamId: requesterSteamId },
|
||||||
|
select: { steamId: true, name: true, teamId: true },
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
|
||||||
if (!team) {
|
if (!team) {
|
||||||
return NextResponse.json({ message: 'Team nicht gefunden' }, { status: 404 })
|
return NextResponse.json({ message: 'Team nicht gefunden' }, { status: 404 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ───────────────── Bereits Mitglied? ──────────────────── */
|
// ── Bereits in irgendeinem Team? ─────────────────────────
|
||||||
|
if (requester?.teamId && requester.teamId !== team.id) {
|
||||||
|
return NextResponse.json({ message: 'Du bist bereits in einem anderen Team' }, { status: 400 })
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Schon (irgendwie) Mitglied dieses Teams? ────────────
|
||||||
if (
|
if (
|
||||||
requesterSteamId === team.leaderId ||
|
requesterSteamId === team.leaderId ||
|
||||||
team.activePlayers.includes(requesterSteamId) ||
|
team.activePlayers.includes(requesterSteamId) ||
|
||||||
team.inactivePlayers.includes(requesterSteamId)
|
team.inactivePlayers.includes(requesterSteamId)
|
||||||
) {
|
) {
|
||||||
return NextResponse.json({ message: 'Du bist bereits Mitglied' }, { status: 400 })
|
return NextResponse.json({ message: 'Du bist bereits Mitglied' }, { status: 200 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ───────────────── Doppelte Anfrage vermeiden ─────────── */
|
// ── Policy Switch ───────────────────────────────────────
|
||||||
|
if (team.joinPolicy === 'INVITE_ONLY') {
|
||||||
|
return NextResponse.json(
|
||||||
|
{ message: 'Dieses Team akzeptiert nur Einladungen' },
|
||||||
|
{ status: 403 }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Policy: REQUEST (default) → Anfrage anlegen
|
||||||
const existingInvite = await prisma.teamInvite.findFirst({
|
const existingInvite = await prisma.teamInvite.findFirst({
|
||||||
where: {
|
where: { steamId: requesterSteamId, teamId, type: 'team-join-request' },
|
||||||
steamId: requesterSteamId,
|
select: { id: true },
|
||||||
teamId,
|
|
||||||
type : 'team-join-request',
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
if (existingInvite) {
|
if (existingInvite) {
|
||||||
return NextResponse.json({ message: 'Anfrage läuft bereits' }, { status: 200 })
|
return NextResponse.json({ message: 'Anfrage läuft bereits' }, { status: 200 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ───────────────── Invitation anlegen ─────────────────── */
|
|
||||||
const invitation = await prisma.teamInvite.create({
|
const invitation = await prisma.teamInvite.create({
|
||||||
data: {
|
data: { steamId: requesterSteamId, teamId, type: 'team-join-request' },
|
||||||
steamId: requesterSteamId,
|
|
||||||
teamId ,
|
|
||||||
type : 'team-join-request',
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* ───────────────── Leader benachrichtigen ─────────────── */
|
|
||||||
const notification = await prisma.notification.create({
|
const notification = await prisma.notification.create({
|
||||||
data: {
|
data: {
|
||||||
steamId : team.leaderId!, // garantiert vorhanden
|
steamId: team.leaderId!,
|
||||||
title : 'Beitrittsanfrage',
|
title: 'Beitrittsanfrage',
|
||||||
message : `${session.user.name ?? 'Ein Spieler'} möchte deinem Team beitreten.`,
|
message: `${session.user.name ?? 'Ein Spieler'} möchte deinem Team beitreten.`,
|
||||||
actionType: 'team-join-request',
|
actionType: 'team-join-request',
|
||||||
actionData: invitation.id, // ← WICHTIG: invitationId
|
actionData: invitation.id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
/* ───────────────── SSE Event auslösen ─────────────────── */
|
// SSE an Leader
|
||||||
await sendServerSSEMessage({
|
await sendServerSSEMessage({
|
||||||
type : notification.actionType ?? 'notification',
|
type: notification.actionType ?? 'notification',
|
||||||
targetUserIds: [team.leaderId],
|
targetUserIds: [team.leaderId],
|
||||||
message : notification.message,
|
message: notification.message,
|
||||||
id : notification.id,
|
id: notification.id,
|
||||||
actionType : notification.actionType ?? undefined,
|
actionType: notification.actionType ?? undefined,
|
||||||
actionData : notification.actionData ?? undefined, // invitation.id
|
actionData: notification.actionData ?? undefined,
|
||||||
createdAt : notification.createdAt.toISOString(),
|
createdAt: notification.createdAt.toISOString(),
|
||||||
|
payload: { teamId: team.id },
|
||||||
})
|
})
|
||||||
|
|
||||||
return NextResponse.json({ message: 'Anfrage gesendet' }, { status: 200 })
|
return NextResponse.json({ message: 'Anfrage gesendet' }, { status: 200 })
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('POST /api/team/request-join', err)
|
console.error('POST /api/team/request-join', err)
|
||||||
return NextResponse.json({ message: 'Interner Serverfehler' }, { status: 500 })
|
return NextResponse.json({ message: 'Interner Serverfehler' }, { status: 500 })
|
||||||
|
|||||||
91
src/app/api/team/update-join-policy/route.ts
Normal file
91
src/app/api/team/update-join-policy/route.ts
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
// /src/app/api/team/update-join-policy/route.ts
|
||||||
|
import { NextResponse, type NextRequest } from 'next/server'
|
||||||
|
import { prisma } from '@/lib/prisma'
|
||||||
|
import { getServerSession } from 'next-auth'
|
||||||
|
import { authOptions } from '@/lib/auth'
|
||||||
|
import { sendServerSSEMessage } from '@/lib/sse-server-client'
|
||||||
|
import type { TeamJoinPolicy } from '@/types/team'
|
||||||
|
|
||||||
|
export const runtime = 'nodejs' // ✅ Prisma-kompatibel
|
||||||
|
export const dynamic = 'force-dynamic' // (nur Vorsicht, POST ist eh dynamisch)
|
||||||
|
|
||||||
|
const ALLOWED = ['REQUEST', 'INVITE_ONLY'] as const
|
||||||
|
type AllowedPolicy = (typeof ALLOWED)[number]
|
||||||
|
|
||||||
|
export async function POST(req: NextRequest) {
|
||||||
|
try {
|
||||||
|
// ─ Session ─
|
||||||
|
const session = await getServerSession(authOptions(req))
|
||||||
|
|
||||||
|
const meId = session?.user?.steamId
|
||||||
|
if (!meId) {
|
||||||
|
return NextResponse.json({ message: 'Nicht eingeloggt' }, { status: 401 })
|
||||||
|
}
|
||||||
|
|
||||||
|
// ─ Input ─
|
||||||
|
const body = await req.json().catch(() => ({} as any))
|
||||||
|
const teamId: string | undefined = body?.teamId
|
||||||
|
const joinPolicy: TeamJoinPolicy | undefined = body?.joinPolicy
|
||||||
|
|
||||||
|
if (!teamId) {
|
||||||
|
return NextResponse.json({ message: 'teamId fehlt' }, { status: 400 })
|
||||||
|
}
|
||||||
|
if (!joinPolicy || !ALLOWED.includes(joinPolicy as AllowedPolicy)) {
|
||||||
|
return NextResponse.json({ message: 'Ungültige joinPolicy' }, { status: 400 })
|
||||||
|
}
|
||||||
|
|
||||||
|
// ─ Daten ─
|
||||||
|
const [team, me] = await Promise.all([
|
||||||
|
prisma.team.findUnique({
|
||||||
|
where: { id: teamId },
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
leaderId: true,
|
||||||
|
joinPolicy: true,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
prisma.user.findUnique({
|
||||||
|
where: { steamId: meId },
|
||||||
|
select: { steamId: true, isAdmin: true },
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
|
||||||
|
if (!team) {
|
||||||
|
return NextResponse.json({ message: 'Team nicht gefunden' }, { status: 404 })
|
||||||
|
}
|
||||||
|
|
||||||
|
const isLeader = meId === team.leaderId
|
||||||
|
const isAdmin = !!me?.isAdmin
|
||||||
|
if (!isLeader && !isAdmin) {
|
||||||
|
return NextResponse.json({ message: 'Keine Berechtigung' }, { status: 403 })
|
||||||
|
}
|
||||||
|
|
||||||
|
if (team.joinPolicy === joinPolicy) {
|
||||||
|
return NextResponse.json({ message: 'Unverändert', joinPolicy }, { status: 200 })
|
||||||
|
}
|
||||||
|
|
||||||
|
const updated = await prisma.team.update({
|
||||||
|
where: { id: teamId },
|
||||||
|
data: { joinPolicy },
|
||||||
|
select: { id: true, joinPolicy: true },
|
||||||
|
})
|
||||||
|
|
||||||
|
// ─ SSE (nicht blockierend!) ─
|
||||||
|
// Kein await → Request-Antwort wird NICHT aufgehalten
|
||||||
|
Promise.resolve().then(() =>
|
||||||
|
sendServerSSEMessage({
|
||||||
|
type: 'team-updated',
|
||||||
|
message: 'Beitrittsmodus wurde geändert.',
|
||||||
|
payload: { teamId: updated.id, joinPolicy: updated.joinPolicy },
|
||||||
|
}).catch(e => console.warn('SSE send failed (ignored):', e))
|
||||||
|
)
|
||||||
|
|
||||||
|
return NextResponse.json(
|
||||||
|
{ message: 'Beitrittsmodus aktualisiert', teamId: updated.id, joinPolicy: updated.joinPolicy },
|
||||||
|
{ status: 200 }
|
||||||
|
)
|
||||||
|
} catch (err) {
|
||||||
|
console.error('POST /api/team/update-join-policy', err)
|
||||||
|
return NextResponse.json({ message: 'Interner Serverfehler' }, { status: 500 })
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -7,7 +7,7 @@ export const dynamic = 'force-dynamic'
|
|||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
try {
|
try {
|
||||||
// 1) Teams laden (ohne leaderId im späteren Response)
|
// 1) Teams laden
|
||||||
const teams = await prisma.team.findMany({
|
const teams = await prisma.team.findMany({
|
||||||
select: {
|
select: {
|
||||||
id: true,
|
id: true,
|
||||||
@ -16,7 +16,7 @@ export async function GET() {
|
|||||||
createdAt: true,
|
createdAt: true,
|
||||||
activePlayers: true,
|
activePlayers: true,
|
||||||
inactivePlayers: true,
|
inactivePlayers: true,
|
||||||
// Leader direkt als User-Objekt laden
|
joinPolicy: true, // 👈 NEU
|
||||||
leader: {
|
leader: {
|
||||||
select: {
|
select: {
|
||||||
steamId: true,
|
steamId: true,
|
||||||
@ -40,13 +40,15 @@ export async function GET() {
|
|||||||
const teamIds = teams.map(t => t.id)
|
const teamIds = teams.map(t => t.id)
|
||||||
|
|
||||||
// 2) Ausstehende Einladungen pro Team holen
|
// 2) Ausstehende Einladungen pro Team holen
|
||||||
// (falls du "revoked/accepted" Flags hast, hier mitfiltern)
|
|
||||||
const invites = await prisma.teamInvite.findMany({
|
const invites = await prisma.teamInvite.findMany({
|
||||||
where: { teamId: { in: teamIds } },
|
where: {
|
||||||
|
teamId: { in: teamIds },
|
||||||
|
// OPTIONAL sauberer, falls du auch Join-Requests in dieser Tabelle hast:
|
||||||
|
// type: 'team-invite',
|
||||||
|
},
|
||||||
select: { id: true, teamId: true, steamId: true },
|
select: { id: true, teamId: true, steamId: true },
|
||||||
})
|
})
|
||||||
|
|
||||||
// Map: teamId -> [{steamId, invitationId}]
|
|
||||||
const invitedByTeam = new Map<string, { steamId: string; invitationId: string }[]>()
|
const invitedByTeam = new Map<string, { steamId: string; invitationId: string }[]>()
|
||||||
for (const inv of invites) {
|
for (const inv of invites) {
|
||||||
const arr = invitedByTeam.get(inv.teamId) ?? []
|
const arr = invitedByTeam.get(inv.teamId) ?? []
|
||||||
@ -54,7 +56,7 @@ export async function GET() {
|
|||||||
invitedByTeam.set(inv.teamId, arr)
|
invitedByTeam.set(inv.teamId, arr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3) Alle benötigten SteamIDs sammeln (aktive, inaktive, invited)
|
// 3) Alle benötigten SteamIDs sammeln
|
||||||
const uniqueIds = new Set<string>()
|
const uniqueIds = new Set<string>()
|
||||||
for (const t of teams) {
|
for (const t of teams) {
|
||||||
t.activePlayers.forEach(id => uniqueIds.add(id))
|
t.activePlayers.forEach(id => uniqueIds.add(id))
|
||||||
@ -62,10 +64,8 @@ export async function GET() {
|
|||||||
const invited = invitedByTeam.get(t.id) ?? []
|
const invited = invitedByTeam.get(t.id) ?? []
|
||||||
invited.forEach(i => uniqueIds.add(i.steamId))
|
invited.forEach(i => uniqueIds.add(i.steamId))
|
||||||
}
|
}
|
||||||
// Leader müssen nicht in uniqueIds, da oben bereits als Objekt geladen.
|
|
||||||
// (könnten aber optional dazu; ist hier nicht nötig)
|
|
||||||
|
|
||||||
// 4) Nutzer-Daten für alle IDs holen
|
// 4) Nutzer-Daten holen
|
||||||
const users = await prisma.user.findMany({
|
const users = await prisma.user.findMany({
|
||||||
where: { steamId: { in: [...uniqueIds] } },
|
where: { steamId: { in: [...uniqueIds] } },
|
||||||
select: {
|
select: {
|
||||||
@ -77,7 +77,6 @@ export async function GET() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
// Lookup-Map
|
|
||||||
const byId: Record<string, Player | undefined> = {}
|
const byId: Record<string, Player | undefined> = {}
|
||||||
const DEFAULT_AVATAR = '/assets/img/avatars/default.png'
|
const DEFAULT_AVATAR = '/assets/img/avatars/default.png'
|
||||||
const UNKNOWN_NAME = 'Unbekannt'
|
const UNKNOWN_NAME = 'Unbekannt'
|
||||||
@ -94,7 +93,6 @@ export async function GET() {
|
|||||||
|
|
||||||
// 5) Ergebnis formen
|
// 5) Ergebnis formen
|
||||||
const result = teams.map(t => {
|
const result = teams.map(t => {
|
||||||
// Leader (bereits komplett geladen); mit Defaults absichern
|
|
||||||
const leader: Player | undefined = t.leader
|
const leader: Player | undefined = t.leader
|
||||||
? {
|
? {
|
||||||
steamId: t.leader.steamId,
|
steamId: t.leader.steamId,
|
||||||
@ -105,43 +103,35 @@ export async function GET() {
|
|||||||
}
|
}
|
||||||
: undefined
|
: undefined
|
||||||
|
|
||||||
// Aktive & Inaktive Spieler aus Map befüllen
|
const activePlayers: Player[] = t.activePlayers.map(id => byId[id]).filter(Boolean) as Player[]
|
||||||
const activePlayers: Player[] = t.activePlayers
|
const inactivePlayers: Player[] = t.inactivePlayers.map(id => byId[id]).filter(Boolean) as Player[]
|
||||||
.map(id => byId[id])
|
|
||||||
.filter(Boolean) as Player[]
|
|
||||||
|
|
||||||
const inactivePlayers: Player[] = t.inactivePlayers
|
|
||||||
.map(id => byId[id])
|
|
||||||
.filter(Boolean) as Player[]
|
|
||||||
|
|
||||||
// Eingeladene Spieler inkl. invitationId
|
|
||||||
const invitedRaw = invitedByTeam.get(t.id) ?? []
|
const invitedRaw = invitedByTeam.get(t.id) ?? []
|
||||||
const invitedPlayers: (Player & { invitationId?: string })[] = invitedRaw
|
const invitedPlayers: (Player & { invitationId?: string })[] = invitedRaw.map(({ steamId, invitationId }) => {
|
||||||
.map(({ steamId, invitationId }) => {
|
const base = byId[steamId]
|
||||||
const base = byId[steamId]
|
if (!base) {
|
||||||
// Falls User (noch) nicht existiert, mit Fallbacks liefern
|
return {
|
||||||
if (!base) {
|
steamId,
|
||||||
return {
|
name: UNKNOWN_NAME,
|
||||||
steamId,
|
avatar: DEFAULT_AVATAR,
|
||||||
name: UNKNOWN_NAME,
|
location: '',
|
||||||
avatar: DEFAULT_AVATAR,
|
premierRank: 0,
|
||||||
location: '',
|
invitationId,
|
||||||
premierRank: 0,
|
|
||||||
invitationId,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return { ...base, invitationId }
|
}
|
||||||
})
|
return { ...base, invitationId }
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: t.id,
|
id: t.id,
|
||||||
name: t.name,
|
name: t.name,
|
||||||
logo: t.logo,
|
logo: t.logo,
|
||||||
createdAt: t.createdAt,
|
createdAt: t.createdAt,
|
||||||
leader, // ✅ voll befüllt
|
joinPolicy: t.joinPolicy, // 👈 NEU ins Response geben
|
||||||
activePlayers, // ✅ Player[]
|
leader,
|
||||||
inactivePlayers, // ✅ Player[]
|
activePlayers,
|
||||||
invitedPlayers, // ✅ Player[] mit invitationId
|
inactivePlayers,
|
||||||
|
invitedPlayers,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -176,7 +176,8 @@ exports.Prisma.TeamScalarFieldEnum = {
|
|||||||
leaderId: 'leaderId',
|
leaderId: 'leaderId',
|
||||||
createdAt: 'createdAt',
|
createdAt: 'createdAt',
|
||||||
activePlayers: 'activePlayers',
|
activePlayers: 'activePlayers',
|
||||||
inactivePlayers: 'inactivePlayers'
|
inactivePlayers: 'inactivePlayers',
|
||||||
|
joinPolicy: 'joinPolicy'
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.Prisma.TeamInviteScalarFieldEnum = {
|
exports.Prisma.TeamInviteScalarFieldEnum = {
|
||||||
@ -397,6 +398,11 @@ exports.FaceitGameId = exports.$Enums.FaceitGameId = {
|
|||||||
cs2: 'cs2'
|
cs2: 'cs2'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.TeamJoinPolicy = exports.$Enums.TeamJoinPolicy = {
|
||||||
|
REQUEST: 'REQUEST',
|
||||||
|
INVITE_ONLY: 'INVITE_ONLY'
|
||||||
|
};
|
||||||
|
|
||||||
exports.ScheduleStatus = exports.$Enums.ScheduleStatus = {
|
exports.ScheduleStatus = exports.$Enums.ScheduleStatus = {
|
||||||
PENDING: 'PENDING',
|
PENDING: 'PENDING',
|
||||||
CONFIRMED: 'CONFIRMED',
|
CONFIRMED: 'CONFIRMED',
|
||||||
|
|||||||
133
src/generated/prisma/index.d.ts
vendored
133
src/generated/prisma/index.d.ts
vendored
@ -115,6 +115,14 @@ export const FaceitGameId: {
|
|||||||
export type FaceitGameId = (typeof FaceitGameId)[keyof typeof FaceitGameId]
|
export type FaceitGameId = (typeof FaceitGameId)[keyof typeof FaceitGameId]
|
||||||
|
|
||||||
|
|
||||||
|
export const TeamJoinPolicy: {
|
||||||
|
REQUEST: 'REQUEST',
|
||||||
|
INVITE_ONLY: 'INVITE_ONLY'
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TeamJoinPolicy = (typeof TeamJoinPolicy)[keyof typeof TeamJoinPolicy]
|
||||||
|
|
||||||
|
|
||||||
export const ScheduleStatus: {
|
export const ScheduleStatus: {
|
||||||
PENDING: 'PENDING',
|
PENDING: 'PENDING',
|
||||||
CONFIRMED: 'CONFIRMED',
|
CONFIRMED: 'CONFIRMED',
|
||||||
@ -144,6 +152,10 @@ export type FaceitGameId = $Enums.FaceitGameId
|
|||||||
|
|
||||||
export const FaceitGameId: typeof $Enums.FaceitGameId
|
export const FaceitGameId: typeof $Enums.FaceitGameId
|
||||||
|
|
||||||
|
export type TeamJoinPolicy = $Enums.TeamJoinPolicy
|
||||||
|
|
||||||
|
export const TeamJoinPolicy: typeof $Enums.TeamJoinPolicy
|
||||||
|
|
||||||
export type ScheduleStatus = $Enums.ScheduleStatus
|
export type ScheduleStatus = $Enums.ScheduleStatus
|
||||||
|
|
||||||
export const ScheduleStatus: typeof $Enums.ScheduleStatus
|
export const ScheduleStatus: typeof $Enums.ScheduleStatus
|
||||||
@ -5654,6 +5666,7 @@ export namespace Prisma {
|
|||||||
logoUpdatedAt: Date | null
|
logoUpdatedAt: Date | null
|
||||||
leaderId: string | null
|
leaderId: string | null
|
||||||
createdAt: Date | null
|
createdAt: Date | null
|
||||||
|
joinPolicy: $Enums.TeamJoinPolicy | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamMaxAggregateOutputType = {
|
export type TeamMaxAggregateOutputType = {
|
||||||
@ -5663,6 +5676,7 @@ export namespace Prisma {
|
|||||||
logoUpdatedAt: Date | null
|
logoUpdatedAt: Date | null
|
||||||
leaderId: string | null
|
leaderId: string | null
|
||||||
createdAt: Date | null
|
createdAt: Date | null
|
||||||
|
joinPolicy: $Enums.TeamJoinPolicy | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamCountAggregateOutputType = {
|
export type TeamCountAggregateOutputType = {
|
||||||
@ -5674,6 +5688,7 @@ export namespace Prisma {
|
|||||||
createdAt: number
|
createdAt: number
|
||||||
activePlayers: number
|
activePlayers: number
|
||||||
inactivePlayers: number
|
inactivePlayers: number
|
||||||
|
joinPolicy: number
|
||||||
_all: number
|
_all: number
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5685,6 +5700,7 @@ export namespace Prisma {
|
|||||||
logoUpdatedAt?: true
|
logoUpdatedAt?: true
|
||||||
leaderId?: true
|
leaderId?: true
|
||||||
createdAt?: true
|
createdAt?: true
|
||||||
|
joinPolicy?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamMaxAggregateInputType = {
|
export type TeamMaxAggregateInputType = {
|
||||||
@ -5694,6 +5710,7 @@ export namespace Prisma {
|
|||||||
logoUpdatedAt?: true
|
logoUpdatedAt?: true
|
||||||
leaderId?: true
|
leaderId?: true
|
||||||
createdAt?: true
|
createdAt?: true
|
||||||
|
joinPolicy?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamCountAggregateInputType = {
|
export type TeamCountAggregateInputType = {
|
||||||
@ -5705,6 +5722,7 @@ export namespace Prisma {
|
|||||||
createdAt?: true
|
createdAt?: true
|
||||||
activePlayers?: true
|
activePlayers?: true
|
||||||
inactivePlayers?: true
|
inactivePlayers?: true
|
||||||
|
joinPolicy?: true
|
||||||
_all?: true
|
_all?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5789,6 +5807,7 @@ export namespace Prisma {
|
|||||||
createdAt: Date
|
createdAt: Date
|
||||||
activePlayers: string[]
|
activePlayers: string[]
|
||||||
inactivePlayers: string[]
|
inactivePlayers: string[]
|
||||||
|
joinPolicy: $Enums.TeamJoinPolicy
|
||||||
_count: TeamCountAggregateOutputType | null
|
_count: TeamCountAggregateOutputType | null
|
||||||
_min: TeamMinAggregateOutputType | null
|
_min: TeamMinAggregateOutputType | null
|
||||||
_max: TeamMaxAggregateOutputType | null
|
_max: TeamMaxAggregateOutputType | null
|
||||||
@ -5817,6 +5836,7 @@ export namespace Prisma {
|
|||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
activePlayers?: boolean
|
activePlayers?: boolean
|
||||||
inactivePlayers?: boolean
|
inactivePlayers?: boolean
|
||||||
|
joinPolicy?: boolean
|
||||||
leader?: boolean | Team$leaderArgs<ExtArgs>
|
leader?: boolean | Team$leaderArgs<ExtArgs>
|
||||||
members?: boolean | Team$membersArgs<ExtArgs>
|
members?: boolean | Team$membersArgs<ExtArgs>
|
||||||
invites?: boolean | Team$invitesArgs<ExtArgs>
|
invites?: boolean | Team$invitesArgs<ExtArgs>
|
||||||
@ -5838,6 +5858,7 @@ export namespace Prisma {
|
|||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
activePlayers?: boolean
|
activePlayers?: boolean
|
||||||
inactivePlayers?: boolean
|
inactivePlayers?: boolean
|
||||||
|
joinPolicy?: boolean
|
||||||
leader?: boolean | Team$leaderArgs<ExtArgs>
|
leader?: boolean | Team$leaderArgs<ExtArgs>
|
||||||
}, ExtArgs["result"]["team"]>
|
}, ExtArgs["result"]["team"]>
|
||||||
|
|
||||||
@ -5850,6 +5871,7 @@ export namespace Prisma {
|
|||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
activePlayers?: boolean
|
activePlayers?: boolean
|
||||||
inactivePlayers?: boolean
|
inactivePlayers?: boolean
|
||||||
|
joinPolicy?: boolean
|
||||||
leader?: boolean | Team$leaderArgs<ExtArgs>
|
leader?: boolean | Team$leaderArgs<ExtArgs>
|
||||||
}, ExtArgs["result"]["team"]>
|
}, ExtArgs["result"]["team"]>
|
||||||
|
|
||||||
@ -5862,9 +5884,10 @@ export namespace Prisma {
|
|||||||
createdAt?: boolean
|
createdAt?: boolean
|
||||||
activePlayers?: boolean
|
activePlayers?: boolean
|
||||||
inactivePlayers?: boolean
|
inactivePlayers?: boolean
|
||||||
|
joinPolicy?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "name" | "logo" | "logoUpdatedAt" | "leaderId" | "createdAt" | "activePlayers" | "inactivePlayers", ExtArgs["result"]["team"]>
|
export type TeamOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "name" | "logo" | "logoUpdatedAt" | "leaderId" | "createdAt" | "activePlayers" | "inactivePlayers" | "joinPolicy", ExtArgs["result"]["team"]>
|
||||||
export type TeamInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
|
export type TeamInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
|
||||||
leader?: boolean | Team$leaderArgs<ExtArgs>
|
leader?: boolean | Team$leaderArgs<ExtArgs>
|
||||||
members?: boolean | Team$membersArgs<ExtArgs>
|
members?: boolean | Team$membersArgs<ExtArgs>
|
||||||
@ -5906,6 +5929,7 @@ export namespace Prisma {
|
|||||||
createdAt: Date
|
createdAt: Date
|
||||||
activePlayers: string[]
|
activePlayers: string[]
|
||||||
inactivePlayers: string[]
|
inactivePlayers: string[]
|
||||||
|
joinPolicy: $Enums.TeamJoinPolicy
|
||||||
}, ExtArgs["result"]["team"]>
|
}, ExtArgs["result"]["team"]>
|
||||||
composites: {}
|
composites: {}
|
||||||
}
|
}
|
||||||
@ -6346,6 +6370,7 @@ export namespace Prisma {
|
|||||||
readonly createdAt: FieldRef<"Team", 'DateTime'>
|
readonly createdAt: FieldRef<"Team", 'DateTime'>
|
||||||
readonly activePlayers: FieldRef<"Team", 'String[]'>
|
readonly activePlayers: FieldRef<"Team", 'String[]'>
|
||||||
readonly inactivePlayers: FieldRef<"Team", 'String[]'>
|
readonly inactivePlayers: FieldRef<"Team", 'String[]'>
|
||||||
|
readonly joinPolicy: FieldRef<"Team", 'TeamJoinPolicy'>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -22642,7 +22667,8 @@ export namespace Prisma {
|
|||||||
leaderId: 'leaderId',
|
leaderId: 'leaderId',
|
||||||
createdAt: 'createdAt',
|
createdAt: 'createdAt',
|
||||||
activePlayers: 'activePlayers',
|
activePlayers: 'activePlayers',
|
||||||
inactivePlayers: 'inactivePlayers'
|
inactivePlayers: 'inactivePlayers',
|
||||||
|
joinPolicy: 'joinPolicy'
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TeamScalarFieldEnum = (typeof TeamScalarFieldEnum)[keyof typeof TeamScalarFieldEnum]
|
export type TeamScalarFieldEnum = (typeof TeamScalarFieldEnum)[keyof typeof TeamScalarFieldEnum]
|
||||||
@ -22992,6 +23018,20 @@ export namespace Prisma {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to a field of type 'TeamJoinPolicy'
|
||||||
|
*/
|
||||||
|
export type EnumTeamJoinPolicyFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'TeamJoinPolicy'>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to a field of type 'TeamJoinPolicy[]'
|
||||||
|
*/
|
||||||
|
export type ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'TeamJoinPolicy[]'>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to a field of type 'Json'
|
* Reference to a field of type 'Json'
|
||||||
*/
|
*/
|
||||||
@ -23394,6 +23434,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFilter<"Team"> | Date | string
|
createdAt?: DateTimeFilter<"Team"> | Date | string
|
||||||
activePlayers?: StringNullableListFilter<"Team">
|
activePlayers?: StringNullableListFilter<"Team">
|
||||||
inactivePlayers?: StringNullableListFilter<"Team">
|
inactivePlayers?: StringNullableListFilter<"Team">
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFilter<"Team"> | $Enums.TeamJoinPolicy
|
||||||
leader?: XOR<UserNullableScalarRelationFilter, UserWhereInput> | null
|
leader?: XOR<UserNullableScalarRelationFilter, UserWhereInput> | null
|
||||||
members?: UserListRelationFilter
|
members?: UserListRelationFilter
|
||||||
invites?: TeamInviteListRelationFilter
|
invites?: TeamInviteListRelationFilter
|
||||||
@ -23414,6 +23455,7 @@ export namespace Prisma {
|
|||||||
createdAt?: SortOrder
|
createdAt?: SortOrder
|
||||||
activePlayers?: SortOrder
|
activePlayers?: SortOrder
|
||||||
inactivePlayers?: SortOrder
|
inactivePlayers?: SortOrder
|
||||||
|
joinPolicy?: SortOrder
|
||||||
leader?: UserOrderByWithRelationInput
|
leader?: UserOrderByWithRelationInput
|
||||||
members?: UserOrderByRelationAggregateInput
|
members?: UserOrderByRelationAggregateInput
|
||||||
invites?: TeamInviteOrderByRelationAggregateInput
|
invites?: TeamInviteOrderByRelationAggregateInput
|
||||||
@ -23437,6 +23479,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFilter<"Team"> | Date | string
|
createdAt?: DateTimeFilter<"Team"> | Date | string
|
||||||
activePlayers?: StringNullableListFilter<"Team">
|
activePlayers?: StringNullableListFilter<"Team">
|
||||||
inactivePlayers?: StringNullableListFilter<"Team">
|
inactivePlayers?: StringNullableListFilter<"Team">
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFilter<"Team"> | $Enums.TeamJoinPolicy
|
||||||
leader?: XOR<UserNullableScalarRelationFilter, UserWhereInput> | null
|
leader?: XOR<UserNullableScalarRelationFilter, UserWhereInput> | null
|
||||||
members?: UserListRelationFilter
|
members?: UserListRelationFilter
|
||||||
invites?: TeamInviteListRelationFilter
|
invites?: TeamInviteListRelationFilter
|
||||||
@ -23457,6 +23500,7 @@ export namespace Prisma {
|
|||||||
createdAt?: SortOrder
|
createdAt?: SortOrder
|
||||||
activePlayers?: SortOrder
|
activePlayers?: SortOrder
|
||||||
inactivePlayers?: SortOrder
|
inactivePlayers?: SortOrder
|
||||||
|
joinPolicy?: SortOrder
|
||||||
_count?: TeamCountOrderByAggregateInput
|
_count?: TeamCountOrderByAggregateInput
|
||||||
_max?: TeamMaxOrderByAggregateInput
|
_max?: TeamMaxOrderByAggregateInput
|
||||||
_min?: TeamMinOrderByAggregateInput
|
_min?: TeamMinOrderByAggregateInput
|
||||||
@ -23474,6 +23518,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeWithAggregatesFilter<"Team"> | Date | string
|
createdAt?: DateTimeWithAggregatesFilter<"Team"> | Date | string
|
||||||
activePlayers?: StringNullableListFilter<"Team">
|
activePlayers?: StringNullableListFilter<"Team">
|
||||||
inactivePlayers?: StringNullableListFilter<"Team">
|
inactivePlayers?: StringNullableListFilter<"Team">
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyWithAggregatesFilter<"Team"> | $Enums.TeamJoinPolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamInviteWhereInput = {
|
export type TeamInviteWhereInput = {
|
||||||
@ -25062,6 +25107,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -25082,6 +25128,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -25100,6 +25147,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -25120,6 +25168,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
@ -25139,6 +25188,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamUpdateManyMutationInput = {
|
export type TeamUpdateManyMutationInput = {
|
||||||
@ -25149,6 +25199,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamUncheckedUpdateManyInput = {
|
export type TeamUncheckedUpdateManyInput = {
|
||||||
@ -25160,6 +25211,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamInviteCreateInput = {
|
export type TeamInviteCreateInput = {
|
||||||
@ -26957,6 +27009,13 @@ export namespace Prisma {
|
|||||||
isEmpty?: boolean
|
isEmpty?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type EnumTeamJoinPolicyFilter<$PrismaModel = never> = {
|
||||||
|
equals?: $Enums.TeamJoinPolicy | EnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
in?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
notIn?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
not?: NestedEnumTeamJoinPolicyFilter<$PrismaModel> | $Enums.TeamJoinPolicy
|
||||||
|
}
|
||||||
|
|
||||||
export type UserNullableScalarRelationFilter = {
|
export type UserNullableScalarRelationFilter = {
|
||||||
is?: UserWhereInput | null
|
is?: UserWhereInput | null
|
||||||
isNot?: UserWhereInput | null
|
isNot?: UserWhereInput | null
|
||||||
@ -26981,6 +27040,7 @@ export namespace Prisma {
|
|||||||
createdAt?: SortOrder
|
createdAt?: SortOrder
|
||||||
activePlayers?: SortOrder
|
activePlayers?: SortOrder
|
||||||
inactivePlayers?: SortOrder
|
inactivePlayers?: SortOrder
|
||||||
|
joinPolicy?: SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamMaxOrderByAggregateInput = {
|
export type TeamMaxOrderByAggregateInput = {
|
||||||
@ -26990,6 +27050,7 @@ export namespace Prisma {
|
|||||||
logoUpdatedAt?: SortOrder
|
logoUpdatedAt?: SortOrder
|
||||||
leaderId?: SortOrder
|
leaderId?: SortOrder
|
||||||
createdAt?: SortOrder
|
createdAt?: SortOrder
|
||||||
|
joinPolicy?: SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamMinOrderByAggregateInput = {
|
export type TeamMinOrderByAggregateInput = {
|
||||||
@ -26999,6 +27060,17 @@ export namespace Prisma {
|
|||||||
logoUpdatedAt?: SortOrder
|
logoUpdatedAt?: SortOrder
|
||||||
leaderId?: SortOrder
|
leaderId?: SortOrder
|
||||||
createdAt?: SortOrder
|
createdAt?: SortOrder
|
||||||
|
joinPolicy?: SortOrder
|
||||||
|
}
|
||||||
|
|
||||||
|
export type EnumTeamJoinPolicyWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
|
equals?: $Enums.TeamJoinPolicy | EnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
in?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
notIn?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
not?: NestedEnumTeamJoinPolicyWithAggregatesFilter<$PrismaModel> | $Enums.TeamJoinPolicy
|
||||||
|
_count?: NestedIntFilter<$PrismaModel>
|
||||||
|
_min?: NestedEnumTeamJoinPolicyFilter<$PrismaModel>
|
||||||
|
_max?: NestedEnumTeamJoinPolicyFilter<$PrismaModel>
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TeamScalarRelationFilter = {
|
export type TeamScalarRelationFilter = {
|
||||||
@ -28696,6 +28768,10 @@ export namespace Prisma {
|
|||||||
push?: string | string[]
|
push?: string | string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type EnumTeamJoinPolicyFieldUpdateOperationsInput = {
|
||||||
|
set?: $Enums.TeamJoinPolicy
|
||||||
|
}
|
||||||
|
|
||||||
export type UserUpdateOneWithoutLedTeamNestedInput = {
|
export type UserUpdateOneWithoutLedTeamNestedInput = {
|
||||||
create?: XOR<UserCreateWithoutLedTeamInput, UserUncheckedCreateWithoutLedTeamInput>
|
create?: XOR<UserCreateWithoutLedTeamInput, UserUncheckedCreateWithoutLedTeamInput>
|
||||||
connectOrCreate?: UserCreateOrConnectWithoutLedTeamInput
|
connectOrCreate?: UserCreateOrConnectWithoutLedTeamInput
|
||||||
@ -29951,6 +30027,23 @@ export namespace Prisma {
|
|||||||
_max?: NestedEnumFaceitGameIdFilter<$PrismaModel>
|
_max?: NestedEnumFaceitGameIdFilter<$PrismaModel>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type NestedEnumTeamJoinPolicyFilter<$PrismaModel = never> = {
|
||||||
|
equals?: $Enums.TeamJoinPolicy | EnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
in?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
notIn?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
not?: NestedEnumTeamJoinPolicyFilter<$PrismaModel> | $Enums.TeamJoinPolicy
|
||||||
|
}
|
||||||
|
|
||||||
|
export type NestedEnumTeamJoinPolicyWithAggregatesFilter<$PrismaModel = never> = {
|
||||||
|
equals?: $Enums.TeamJoinPolicy | EnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
in?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
notIn?: $Enums.TeamJoinPolicy[] | ListEnumTeamJoinPolicyFieldRefInput<$PrismaModel>
|
||||||
|
not?: NestedEnumTeamJoinPolicyWithAggregatesFilter<$PrismaModel> | $Enums.TeamJoinPolicy
|
||||||
|
_count?: NestedIntFilter<$PrismaModel>
|
||||||
|
_min?: NestedEnumTeamJoinPolicyFilter<$PrismaModel>
|
||||||
|
_max?: NestedEnumTeamJoinPolicyFilter<$PrismaModel>
|
||||||
|
}
|
||||||
|
|
||||||
export type NestedBigIntNullableFilter<$PrismaModel = never> = {
|
export type NestedBigIntNullableFilter<$PrismaModel = never> = {
|
||||||
equals?: bigint | number | BigIntFieldRefInput<$PrismaModel> | null
|
equals?: bigint | number | BigIntFieldRefInput<$PrismaModel> | null
|
||||||
in?: bigint[] | number[] | ListBigIntFieldRefInput<$PrismaModel> | null
|
in?: bigint[] | number[] | ListBigIntFieldRefInput<$PrismaModel> | null
|
||||||
@ -30113,6 +30206,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerCreateNestedManyWithoutTeamInput
|
||||||
@ -30132,6 +30226,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchesAsTeamA?: MatchUncheckedCreateNestedManyWithoutTeamAInput
|
matchesAsTeamA?: MatchUncheckedCreateNestedManyWithoutTeamAInput
|
||||||
@ -30154,6 +30249,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerCreateNestedManyWithoutTeamInput
|
||||||
@ -30172,6 +30268,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -30672,6 +30769,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUpdateManyWithoutTeamNestedInput
|
||||||
@ -30691,6 +30789,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchesAsTeamA?: MatchUncheckedUpdateManyWithoutTeamANestedInput
|
matchesAsTeamA?: MatchUncheckedUpdateManyWithoutTeamANestedInput
|
||||||
@ -30719,6 +30818,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUpdateManyWithoutTeamNestedInput
|
||||||
@ -30737,6 +30837,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
@ -32202,6 +32303,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerCreateNestedManyWithoutTeamInput
|
||||||
@ -32221,6 +32323,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchesAsTeamA?: MatchUncheckedCreateNestedManyWithoutTeamAInput
|
matchesAsTeamA?: MatchUncheckedCreateNestedManyWithoutTeamAInput
|
||||||
@ -32359,6 +32462,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUpdateManyWithoutTeamNestedInput
|
||||||
@ -32378,6 +32482,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchesAsTeamA?: MatchUncheckedUpdateManyWithoutTeamANestedInput
|
matchesAsTeamA?: MatchUncheckedUpdateManyWithoutTeamANestedInput
|
||||||
@ -32599,6 +32704,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -32618,6 +32724,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -32640,6 +32747,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -32659,6 +32767,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -33059,6 +33168,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -33078,6 +33188,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
@ -33106,6 +33217,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -33125,6 +33237,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
@ -33333,6 +33446,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -33352,6 +33466,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchesAsTeamA?: MatchUncheckedCreateNestedManyWithoutTeamAInput
|
matchesAsTeamA?: MatchUncheckedCreateNestedManyWithoutTeamAInput
|
||||||
@ -33618,6 +33733,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -33637,6 +33753,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchesAsTeamA?: MatchUncheckedUpdateManyWithoutTeamANestedInput
|
matchesAsTeamA?: MatchUncheckedUpdateManyWithoutTeamANestedInput
|
||||||
@ -34293,6 +34410,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -34312,6 +34430,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -34334,6 +34453,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -34353,6 +34473,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -34649,6 +34770,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -34668,6 +34790,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
@ -34696,6 +34819,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -34715,6 +34839,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
@ -35739,6 +35864,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
leader?: UserCreateNestedOneWithoutLedTeamInput
|
leader?: UserCreateNestedOneWithoutLedTeamInput
|
||||||
members?: UserCreateNestedManyWithoutTeamInput
|
members?: UserCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteCreateNestedManyWithoutTeamInput
|
||||||
@ -35758,6 +35884,7 @@ export namespace Prisma {
|
|||||||
createdAt?: Date | string
|
createdAt?: Date | string
|
||||||
activePlayers?: TeamCreateactivePlayersInput | string[]
|
activePlayers?: TeamCreateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
inactivePlayers?: TeamCreateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
members?: UserUncheckedCreateNestedManyWithoutTeamInput
|
||||||
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
invites?: TeamInviteUncheckedCreateNestedManyWithoutTeamInput
|
||||||
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
matchPlayers?: MatchPlayerUncheckedCreateNestedManyWithoutTeamInput
|
||||||
@ -35925,6 +36052,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
leader?: UserUpdateOneWithoutLedTeamNestedInput
|
||||||
members?: UserUpdateManyWithoutTeamNestedInput
|
members?: UserUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUpdateManyWithoutTeamNestedInput
|
||||||
@ -35944,6 +36072,7 @@ export namespace Prisma {
|
|||||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||||
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
activePlayers?: TeamUpdateactivePlayersInput | string[]
|
||||||
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
inactivePlayers?: TeamUpdateinactivePlayersInput | string[]
|
||||||
|
joinPolicy?: EnumTeamJoinPolicyFieldUpdateOperationsInput | $Enums.TeamJoinPolicy
|
||||||
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
members?: UserUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
invites?: TeamInviteUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
matchPlayers?: MatchPlayerUncheckedUpdateManyWithoutTeamNestedInput
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "prisma-client-593c7e86a193b89a0b02a9e811c3a30c125592905a16d5c01f1f9522bc8c8086",
|
"name": "prisma-client-e9f85ef18a659dea3be523c367453b73bb1f9ec232929885020f472f49703f84",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"types": "index.d.ts",
|
"types": "index.d.ts",
|
||||||
"browser": "default.js",
|
"browser": "default.js",
|
||||||
|
|||||||
BIN
src/generated/prisma/query_engine-windows.dll.node.tmp2416
Normal file
BIN
src/generated/prisma/query_engine-windows.dll.node.tmp2416
Normal file
Binary file not shown.
@ -113,6 +113,11 @@ model FaceitGameStat {
|
|||||||
@@index([game, elo])
|
@@index([game, elo])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum TeamJoinPolicy {
|
||||||
|
REQUEST
|
||||||
|
INVITE_ONLY
|
||||||
|
}
|
||||||
|
|
||||||
model Team {
|
model Team {
|
||||||
id String @id @default(uuid())
|
id String @id @default(uuid())
|
||||||
name String @unique
|
name String @unique
|
||||||
@ -137,6 +142,9 @@ model Team {
|
|||||||
schedulesAsTeamB Schedule[] @relation("ScheduleTeamB")
|
schedulesAsTeamB Schedule[] @relation("ScheduleTeamB")
|
||||||
|
|
||||||
mapVoteSteps MapVoteStep[] @relation("VoteStepTeam")
|
mapVoteSteps MapVoteStep[] @relation("VoteStepTeam")
|
||||||
|
|
||||||
|
// Default bleibt REQUEST
|
||||||
|
joinPolicy TeamJoinPolicy @default(REQUEST)
|
||||||
}
|
}
|
||||||
|
|
||||||
model TeamInvite {
|
model TeamInvite {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -26,11 +26,14 @@ export type InvitedPlayer = Player & {
|
|||||||
invitationId: string
|
invitationId: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type TeamJoinPolicy = 'REQUEST' | 'INVITE_ONLY'
|
||||||
|
|
||||||
export type Team = {
|
export type Team = {
|
||||||
id: string
|
id: string
|
||||||
name?: string | null
|
name?: string | null
|
||||||
logo?: string | null
|
logo?: string | null
|
||||||
leader?: Player
|
leader?: Player
|
||||||
|
joinPolicy: TeamJoinPolicy
|
||||||
activePlayers: Player[]
|
activePlayers: Player[]
|
||||||
inactivePlayers: Player[]
|
inactivePlayers: Player[]
|
||||||
invitedPlayers: InvitedPlayer[]
|
invitedPlayers: InvitedPlayer[]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user