WIP: Add challenges feature schema and operations
- Add Challenge, ChallengeEntry, ChallengeInvitation, RuleSet types
- Add queries: challenges, challenge, challengeLeaderboard, myChallengeInvitations, myChallengeEntries, ruleSets
- Add mutations: createChallenge, createRuleSet, inviteUsersToChallenge, respondToChallengeInvitation, startChallenge, submitChallengeEntry, recalculateChallengeEntry
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:12:03 -08:00
|
|
|
query GetChallenges {
|
|
|
|
|
challenges {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
minimumShots
|
|
|
|
|
startDate
|
|
|
|
|
endDate
|
|
|
|
|
createdAt
|
|
|
|
|
updatedAt
|
|
|
|
|
requiredTableSize
|
|
|
|
|
requiredPocketSize
|
|
|
|
|
isPublic
|
|
|
|
|
maxAttempts
|
|
|
|
|
ruleSet {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
}
|
|
|
|
|
createdBy {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-25 14:03:53 -08:00
|
|
|
query GetMyDismissedChallenges {
|
|
|
|
|
myDismissedChallenges {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
minimumShots
|
|
|
|
|
startDate
|
|
|
|
|
endDate
|
|
|
|
|
createdAt
|
|
|
|
|
updatedAt
|
|
|
|
|
requiredTableSize
|
|
|
|
|
requiredPocketSize
|
|
|
|
|
isPublic
|
|
|
|
|
maxAttempts
|
|
|
|
|
ruleSet {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
}
|
|
|
|
|
createdBy {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
WIP: Add challenges feature schema and operations
- Add Challenge, ChallengeEntry, ChallengeInvitation, RuleSet types
- Add queries: challenges, challenge, challengeLeaderboard, myChallengeInvitations, myChallengeEntries, ruleSets
- Add mutations: createChallenge, createRuleSet, inviteUsersToChallenge, respondToChallengeInvitation, startChallenge, submitChallengeEntry, recalculateChallengeEntry
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:12:03 -08:00
|
|
|
query GetChallenge($id: ID!) {
|
|
|
|
|
challenge(id: $id) {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
minimumShots
|
|
|
|
|
startDate
|
|
|
|
|
endDate
|
|
|
|
|
createdAt
|
|
|
|
|
updatedAt
|
|
|
|
|
requiredTableSize
|
|
|
|
|
requiredPocketSize
|
|
|
|
|
isPublic
|
|
|
|
|
maxAttempts
|
2025-11-25 10:39:22 -08:00
|
|
|
participantCount
|
WIP: Add challenges feature schema and operations
- Add Challenge, ChallengeEntry, ChallengeInvitation, RuleSet types
- Add queries: challenges, challenge, challengeLeaderboard, myChallengeInvitations, myChallengeEntries, ruleSets
- Add mutations: createChallenge, createRuleSet, inviteUsersToChallenge, respondToChallengeInvitation, startChallenge, submitChallengeEntry, recalculateChallengeEntry
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:12:03 -08:00
|
|
|
ruleSet {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
}
|
|
|
|
|
createdBy {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
2025-11-25 10:39:22 -08:00
|
|
|
invitations {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
createdAt
|
|
|
|
|
invitee {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
inviter {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
}
|
WIP: Add challenges feature schema and operations
- Add Challenge, ChallengeEntry, ChallengeInvitation, RuleSet types
- Add queries: challenges, challenge, challengeLeaderboard, myChallengeInvitations, myChallengeEntries, ruleSets
- Add mutations: createChallenge, createRuleSet, inviteUsersToChallenge, respondToChallengeInvitation, startChallenge, submitChallengeEntry, recalculateChallengeEntry
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:12:03 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
query GetRuleSets {
|
|
|
|
|
ruleSets {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
query GetChallengeLeaderboard($challengeId: ID!, $limit: Int) {
|
|
|
|
|
challengeLeaderboard(challengeId: $challengeId, limit: $limit) {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
shotsCount
|
|
|
|
|
makesCount
|
|
|
|
|
makeRate
|
|
|
|
|
qualified
|
|
|
|
|
createdAt
|
2025-11-25 14:03:53 -08:00
|
|
|
attemptCount
|
WIP: Add challenges feature schema and operations
- Add Challenge, ChallengeEntry, ChallengeInvitation, RuleSet types
- Add queries: challenges, challenge, challengeLeaderboard, myChallengeInvitations, myChallengeEntries, ruleSets
- Add mutations: createChallenge, createRuleSet, inviteUsersToChallenge, respondToChallengeInvitation, startChallenge, submitChallengeEntry, recalculateChallengeEntry
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:12:03 -08:00
|
|
|
user {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
video {
|
|
|
|
|
id
|
|
|
|
|
createdAt
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
query GetMyChallengeInvitations {
|
|
|
|
|
myChallengeInvitations {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
createdAt
|
|
|
|
|
challenge {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
startDate
|
|
|
|
|
endDate
|
|
|
|
|
createdBy {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
inviter {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
profileImageUri
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-25 10:39:22 -08:00
|
|
|
query GetMyChallengeEntries {
|
|
|
|
|
myChallengeEntries {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
shotsCount
|
|
|
|
|
makesCount
|
|
|
|
|
makeRate
|
|
|
|
|
qualified
|
|
|
|
|
createdAt
|
|
|
|
|
challenge {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
|
|
|
|
video {
|
|
|
|
|
id
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
WIP: Add challenges feature schema and operations
- Add Challenge, ChallengeEntry, ChallengeInvitation, RuleSet types
- Add queries: challenges, challenge, challengeLeaderboard, myChallengeInvitations, myChallengeEntries, ruleSets
- Add mutations: createChallenge, createRuleSet, inviteUsersToChallenge, respondToChallengeInvitation, startChallenge, submitChallengeEntry, recalculateChallengeEntry
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:12:03 -08:00
|
|
|
mutation CreateRuleSet($name: String!, $description: String) {
|
|
|
|
|
createRuleSet(name: $name, description: $description) {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation CreateChallenge(
|
|
|
|
|
$name: String!
|
|
|
|
|
$ruleSetId: ID!
|
|
|
|
|
$minimumShots: Int!
|
|
|
|
|
$startDate: DateTime!
|
|
|
|
|
$endDate: DateTime!
|
|
|
|
|
$description: String
|
|
|
|
|
$requiredTableSize: Float
|
|
|
|
|
$requiredPocketSize: Float
|
|
|
|
|
$isPublic: Boolean! = false
|
|
|
|
|
$maxAttempts: Int
|
|
|
|
|
) {
|
|
|
|
|
createChallenge(
|
|
|
|
|
name: $name
|
|
|
|
|
ruleSetId: $ruleSetId
|
|
|
|
|
minimumShots: $minimumShots
|
|
|
|
|
startDate: $startDate
|
|
|
|
|
endDate: $endDate
|
|
|
|
|
description: $description
|
|
|
|
|
requiredTableSize: $requiredTableSize
|
|
|
|
|
requiredPocketSize: $requiredPocketSize
|
|
|
|
|
isPublic: $isPublic
|
|
|
|
|
maxAttempts: $maxAttempts
|
|
|
|
|
) {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
description
|
|
|
|
|
requiredTableSize
|
|
|
|
|
requiredPocketSize
|
|
|
|
|
isPublic
|
|
|
|
|
maxAttempts
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation InviteUsersToChallenge($challengeId: ID!, $userIds: [ID!]!) {
|
|
|
|
|
inviteUsersToChallenge(challengeId: $challengeId, userIds: $userIds) {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
inviter {
|
|
|
|
|
id
|
|
|
|
|
username
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation RespondToChallengeInvitation($invitationId: ID!, $accept: Boolean!) {
|
|
|
|
|
respondToChallengeInvitation(invitationId: $invitationId, accept: $accept) {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
challenge {
|
|
|
|
|
id
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation StartChallenge($challengeId: ID!) {
|
|
|
|
|
startChallenge(challengeId: $challengeId) {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
createdAt
|
|
|
|
|
challenge {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation SubmitChallengeEntry($entryId: ID!, $videoId: ID!) {
|
|
|
|
|
submitChallengeEntry(entryId: $entryId, videoId: $videoId) {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
qualified
|
|
|
|
|
makeRate
|
|
|
|
|
shotsCount
|
|
|
|
|
makesCount
|
|
|
|
|
video {
|
|
|
|
|
id
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation RecalculateChallengeEntry($entryId: ID!) {
|
|
|
|
|
recalculateChallengeEntry(entryId: $entryId) {
|
|
|
|
|
id
|
|
|
|
|
status
|
|
|
|
|
qualified
|
|
|
|
|
makeRate
|
|
|
|
|
shotsCount
|
|
|
|
|
makesCount
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-11-25 14:03:53 -08:00
|
|
|
|
|
|
|
|
query IsChallengeDismissed($challengeId: ID!) {
|
|
|
|
|
isChallengeDismissed(challengeId: $challengeId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation DismissChallenge($challengeId: ID!) {
|
|
|
|
|
dismissChallenge(challengeId: $challengeId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutation UndismissChallenge($challengeId: ID!) {
|
|
|
|
|
undismissChallenge(challengeId: $challengeId)
|
|
|
|
|
}
|