From 0ce333525c86f0f7b9cb02bf92c3cf960d69adbc Mon Sep 17 00:00:00 2001 From: Dean Wenstrand Date: Mon, 15 Jun 2026 19:33:56 -0700 Subject: [PATCH 1/3] Add GetMyDrillRuns query + generated types Co-Authored-By: Claude Opus 4.8 --- src/index.tsx | 97 +++++++++++++++++++++++++++++++++ src/operations/leaderboards.gql | 8 +++ src/schema.gql | 1 + 3 files changed, 106 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 11cd3c0..13676cd 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -2839,6 +2839,7 @@ export type Query = { getLongestRunsLeaderboard: RunLeaderboardGql; getMakesLeaderboard: CountLeaderboardGql; getMedals: RequestedMedalsGql; + getMyDrillRuns: Array; getOrderedShots: GetShotsResult; getPlayTime: UserPlayTimeGql; getQuotaStatus: QuotaStatusGql; @@ -2930,6 +2931,11 @@ export type QueryGetMedalsArgs = { userId?: InputMaybe; }; +export type QueryGetMyDrillRunsArgs = { + drillTag: Scalars["String"]["input"]; + limit?: Scalars["Int"]["input"]; +}; + export type QueryGetOrderedShotsArgs = { countRespectsLimit?: Scalars["Boolean"]["input"]; filterInput: FilterInput; @@ -4649,6 +4655,21 @@ export type GetDrillRunLeaderboardQuery = { }; }; +export type GetMyDrillRunsQueryVariables = Exact<{ + drillTag: Scalars["String"]["input"]; + limit?: InputMaybe; +}>; + +export type GetMyDrillRunsQuery = { + __typename?: "Query"; + getMyDrillRuns: Array<{ + __typename?: "RunGQL"; + id: number; + runLength: number; + videoId: number; + }>; +}; + export type GetVideoMakePercentageIntervalsQueryVariables = Exact<{ videoId: Scalars["ID"]["input"]; intervalDuration: Scalars["Int"]["input"]; @@ -9722,6 +9743,82 @@ export type GetDrillRunLeaderboardQueryResult = Apollo.QueryResult< GetDrillRunLeaderboardQuery, GetDrillRunLeaderboardQueryVariables >; +export const GetMyDrillRunsDocument = gql` + query GetMyDrillRuns($drillTag: String!, $limit: Int = 50) { + getMyDrillRuns(drillTag: $drillTag, limit: $limit) { + id + runLength + videoId + } + } +`; + +/** + * __useGetMyDrillRunsQuery__ + * + * To run a query within a React component, call `useGetMyDrillRunsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetMyDrillRunsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetMyDrillRunsQuery({ + * variables: { + * drillTag: // value for 'drillTag' + * limit: // value for 'limit' + * }, + * }); + */ +export function useGetMyDrillRunsQuery( + baseOptions: Apollo.QueryHookOptions< + GetMyDrillRunsQuery, + GetMyDrillRunsQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useQuery( + GetMyDrillRunsDocument, + options, + ); +} +export function useGetMyDrillRunsLazyQuery( + baseOptions?: Apollo.LazyQueryHookOptions< + GetMyDrillRunsQuery, + GetMyDrillRunsQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useLazyQuery( + GetMyDrillRunsDocument, + options, + ); +} +export function useGetMyDrillRunsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions< + GetMyDrillRunsQuery, + GetMyDrillRunsQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useSuspenseQuery< + GetMyDrillRunsQuery, + GetMyDrillRunsQueryVariables + >(GetMyDrillRunsDocument, options); +} +export type GetMyDrillRunsQueryHookResult = ReturnType< + typeof useGetMyDrillRunsQuery +>; +export type GetMyDrillRunsLazyQueryHookResult = ReturnType< + typeof useGetMyDrillRunsLazyQuery +>; +export type GetMyDrillRunsSuspenseQueryHookResult = ReturnType< + typeof useGetMyDrillRunsSuspenseQuery +>; +export type GetMyDrillRunsQueryResult = Apollo.QueryResult< + GetMyDrillRunsQuery, + GetMyDrillRunsQueryVariables +>; export const GetVideoMakePercentageIntervalsDocument = gql` query GetVideoMakePercentageIntervals( $videoId: ID! diff --git a/src/operations/leaderboards.gql b/src/operations/leaderboards.gql index 5a28752..d18c999 100644 --- a/src/operations/leaderboards.gql +++ b/src/operations/leaderboards.gql @@ -60,3 +60,11 @@ query GetDrillRunLeaderboard( totalPlayers } } + +query GetMyDrillRuns($drillTag: String!, $limit: Int = 50) { + getMyDrillRuns(drillTag: $drillTag, limit: $limit) { + id + runLength + videoId + } +} diff --git a/src/schema.gql b/src/schema.gql index 8438740..9587430 100644 --- a/src/schema.gql +++ b/src/schema.gql @@ -36,6 +36,7 @@ type Query { interval: TimeInterval = null limit: Int! = 50 ): DrillRunLeaderboardGQL! + getMyDrillRuns(drillTag: String!, limit: Int! = 50): [RunGQL!]! getMakesLeaderboard( interval: TimeInterval = null when: DateTime = null -- 2.49.1 From 7ec6ec9193650307ed33505242504aea62b9a360 Mon Sep 17 00:00:00 2001 From: Dean Wenstrand Date: Mon, 15 Jun 2026 19:42:02 -0700 Subject: [PATCH 2/3] GetMyDrillRuns: include run date (video.createdAt) Co-Authored-By: Claude Opus 4.8 --- src/index.tsx | 4 ++++ src/operations/leaderboards.gql | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 13676cd..afb30a6 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4667,6 +4667,7 @@ export type GetMyDrillRunsQuery = { id: number; runLength: number; videoId: number; + video: { __typename?: "VideoGQL"; createdAt?: any | null }; }>; }; @@ -9749,6 +9750,9 @@ export const GetMyDrillRunsDocument = gql` id runLength videoId + video { + createdAt + } } } `; diff --git a/src/operations/leaderboards.gql b/src/operations/leaderboards.gql index d18c999..3bbc5bb 100644 --- a/src/operations/leaderboards.gql +++ b/src/operations/leaderboards.gql @@ -66,5 +66,8 @@ query GetMyDrillRuns($drillTag: String!, $limit: Int = 50) { id runLength videoId + video { + createdAt + } } } -- 2.49.1 From 53fa982bcfc08488d03e836a053f3375410ae0e1 Mon Sep 17 00:00:00 2001 From: Dean Wenstrand Date: Mon, 15 Jun 2026 21:19:37 -0700 Subject: [PATCH 3/3] GetDrillRunLeaderboard: table/pocket filter vars + setup fields Co-Authored-By: Claude Opus 4.8 --- src/index.tsx | 29 +++++++++++++++++++++++++++++ src/operations/leaderboards.gql | 12 ++++++++++++ src/schema.gql | 4 ++++ 3 files changed, 45 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index afb30a6..1c544b4 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -2899,6 +2899,10 @@ export type QueryGetDrillRunLeaderboardArgs = { drillTag: Scalars["String"]["input"]; interval?: InputMaybe; limit?: Scalars["Int"]["input"]; + pocketSizeMax?: InputMaybe; + pocketSizeMin?: InputMaybe; + tableSizeMax?: InputMaybe; + tableSizeMin?: InputMaybe; }; export type QueryGetFeedVideosArgs = { @@ -4626,6 +4630,10 @@ export type GetDrillRunLeaderboardQueryVariables = Exact<{ drillTag: Scalars["String"]["input"]; interval?: InputMaybe; limit?: InputMaybe; + tableSizeMin?: InputMaybe; + tableSizeMax?: InputMaybe; + pocketSizeMin?: InputMaybe; + pocketSizeMax?: InputMaybe; }>; export type GetDrillRunLeaderboardQuery = { @@ -4639,6 +4647,11 @@ export type GetDrillRunLeaderboardQuery = { id: number; runLength: number; videoId: number; + video: { + __typename?: "VideoGQL"; + tableSize: number; + pocketSize?: number | null; + }; user: { __typename?: "UserGQL"; id: number; @@ -9650,16 +9663,28 @@ export const GetDrillRunLeaderboardDocument = gql` $drillTag: String! $interval: TimeInterval $limit: Int = 50 + $tableSizeMin: Float + $tableSizeMax: Float + $pocketSizeMin: Float + $pocketSizeMax: Float ) { getDrillRunLeaderboard( drillTag: $drillTag interval: $interval limit: $limit + tableSizeMin: $tableSizeMin + tableSizeMax: $tableSizeMax + pocketSizeMin: $pocketSizeMin + pocketSizeMax: $pocketSizeMax ) { entries { id runLength videoId + video { + tableSize + pocketSize + } user { id username @@ -9692,6 +9717,10 @@ export const GetDrillRunLeaderboardDocument = gql` * drillTag: // value for 'drillTag' * interval: // value for 'interval' * limit: // value for 'limit' + * tableSizeMin: // value for 'tableSizeMin' + * tableSizeMax: // value for 'tableSizeMax' + * pocketSizeMin: // value for 'pocketSizeMin' + * pocketSizeMax: // value for 'pocketSizeMax' * }, * }); */ diff --git a/src/operations/leaderboards.gql b/src/operations/leaderboards.gql index 3bbc5bb..b8d82dc 100644 --- a/src/operations/leaderboards.gql +++ b/src/operations/leaderboards.gql @@ -35,16 +35,28 @@ query GetDrillRunLeaderboard( $drillTag: String! $interval: TimeInterval $limit: Int = 50 + $tableSizeMin: Float + $tableSizeMax: Float + $pocketSizeMin: Float + $pocketSizeMax: Float ) { getDrillRunLeaderboard( drillTag: $drillTag interval: $interval limit: $limit + tableSizeMin: $tableSizeMin + tableSizeMax: $tableSizeMax + pocketSizeMin: $pocketSizeMin + pocketSizeMax: $pocketSizeMax ) { entries { id runLength videoId + video { + tableSize + pocketSize + } user { id username diff --git a/src/schema.gql b/src/schema.gql index 9587430..7f3b1b7 100644 --- a/src/schema.gql +++ b/src/schema.gql @@ -35,6 +35,10 @@ type Query { drillTag: String! interval: TimeInterval = null limit: Int! = 50 + tableSizeMin: Float = null + tableSizeMax: Float = null + pocketSizeMin: Float = null + pocketSizeMax: Float = null ): DrillRunLeaderboardGQL! getMyDrillRuns(drillTag: String!, limit: Int! = 50): [RunGQL!]! getMakesLeaderboard( -- 2.49.1