Compare commits

..

18 Commits

Author SHA1 Message Date
62cf4ae56d Create tags in video metadata
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2025-02-03 16:41:25 -07:00
365cbb5f70 Merge pull request 'Create upload stream named fragment' (#156) from kat/named-fragment-mini-video into master
Reviewed-on: #156
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2025-01-28 21:31:23 -07:00
194d0dcd22 Create upload stream named fragment
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2025-01-28 21:28:31 -07:00
8fcaa1397a Merge pull request 'Add query to get info for banner component' (#155) from loewy/get-banner-info-by-video-id into master
Reviewed-on: #155
2025-01-21 14:20:42 -07:00
e8e318b919 add query to get info for banner component
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2025-01-20 15:04:23 -08:00
ff0a11ea0d Merge pull request 'Add last intended segment bound in fragment for VideoFeed stream obj' (#154) from loewy/add-last-intended-segment-bound-to-stream into master
Reviewed-on: #154
2025-01-16 23:03:42 -07:00
84192d1387 add last intended segment bound
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2025-01-16 22:01:57 -08:00
f1ae2b62d6 Add limit parameter 2025-01-16 20:16:29 -07:00
4f78cd94ab Add video info to longest runs leaderboard 2025-01-16 17:01:32 -07:00
bfdda67d1a Add run filter and run fields 2025-01-16 15:44:11 -07:00
881350619a Add get longest runs operation 2024-12-23 13:55:14 -07:00
8bc67f75b0 Use RunGQL directly for run leaderboard 2024-12-22 23:30:01 -07:00
df8495df77 Add proportion and total made to leaderboard query 2024-12-22 17:12:24 -07:00
0c45855f7d Add video count 2024-12-22 15:37:06 -07:00
a2e659dfcb Add runs leaderboard 2024-12-22 15:00:19 -07:00
2a36a392ce Merge pull request 'Leaderboards operation' (#153) from loewy/leaderboard-operations into master
Reviewed-on: #153
2024-12-20 14:14:24 -07:00
145c2f9558 leaderboards operation
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-12-20 13:13:30 -08:00
3f2e5d331f Add makes leaderboard 2024-12-19 17:48:29 -07:00
6 changed files with 598 additions and 18 deletions

View File

@@ -122,6 +122,11 @@ export enum ClientUploadStatusEnum {
UploadEnabled = "UPLOAD_ENABLED",
}
export type CountLeaderboardGql = {
__typename?: "CountLeaderboardGQL";
entries: Array<UserShotCountEntry>;
};
export type CreateBucketSetInput = {
buckets: Array<BucketInputGql>;
feature: Scalars["String"]["input"];
@@ -243,6 +248,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -285,6 +291,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -327,6 +334,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -369,6 +377,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -411,6 +420,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -453,6 +463,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -495,6 +506,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -537,6 +549,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -579,6 +592,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -621,6 +635,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -663,6 +678,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -705,6 +721,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -747,6 +764,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -789,6 +807,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -831,6 +850,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -873,6 +893,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -915,6 +936,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -957,6 +979,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -999,6 +1022,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1041,6 +1065,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1083,6 +1108,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1125,6 +1151,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1167,6 +1194,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1209,6 +1237,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1251,6 +1280,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1293,6 +1323,7 @@ export type FilterInput =
missAngleInDegrees: FloatRangeFilter;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1335,6 +1366,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter: FilterInput;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1377,6 +1409,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters: Array<FilterInput>;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1419,6 +1452,50 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId: Array<Scalars["Int"]["input"]>;
runLength?: never;
shotDirection?: never;
spinType?: never;
tableSize?: never;
tags?: never;
targetPocketAngle?: never;
targetPocketAngleDirection?: never;
targetPocketDistance?: never;
totalDistance?: never;
userId?: never;
username?: never;
videoId?: never;
}
| {
andFilters?: never;
annotations?: never;
backcut?: never;
bankAngle?: never;
bankDistance?: never;
createdAt?: never;
cueAngleAfterObject?: never;
cueBallSpeed?: never;
cueObjectAngle?: never;
cueObjectDistance?: never;
cueSpeedAfterObject?: never;
difficulty?: never;
falsePositiveScore?: never;
fargoRating?: never;
intendedPocketType?: never;
isDirect?: never;
isLeft?: never;
isLeftMiss?: never;
isRight?: never;
isRightMiss?: never;
isStraight?: never;
kickAngle?: never;
kickDistance?: never;
make?: never;
marginOfErrorInDegrees?: never;
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength: FloatRangeFilter;
shotDirection?: never;
spinType?: never;
@@ -1461,6 +1538,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection: Array<ShotDirectionEnum>;
spinType?: never;
@@ -1503,6 +1581,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType: Array<SpinTypeEnum>;
@@ -1545,6 +1624,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1587,6 +1667,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1629,6 +1710,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1671,6 +1753,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1713,6 +1796,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1755,6 +1839,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1797,6 +1882,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1839,6 +1925,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1881,6 +1968,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -2232,6 +2320,8 @@ export type Query = {
getDeployedConfig: DeployedConfigGql;
getFeedVideos: VideoHistoryGql;
getLoggedInUser?: Maybe<UserGql>;
getLongestRunsLeaderboard: RunLeaderboardGql;
getMakesLeaderboard: CountLeaderboardGql;
getMedals: RequestedMedalsGql;
getOrderedShots: GetShotsResult;
getPlayTime: UserPlayTimeGql;
@@ -2272,6 +2362,18 @@ export type QueryGetFeedVideosArgs = {
limit?: Scalars["Int"]["input"];
};
export type QueryGetLongestRunsLeaderboardArgs = {
interval?: InputMaybe<TimeInterval>;
limit?: Scalars["Int"]["input"];
requiredTags?: InputMaybe<Array<Scalars["String"]["input"]>>;
when?: InputMaybe<Scalars["DateTime"]["input"]>;
};
export type QueryGetMakesLeaderboardArgs = {
interval?: InputMaybe<TimeInterval>;
when?: InputMaybe<Scalars["DateTime"]["input"]>;
};
export type QueryGetMedalsArgs = {
scope: MedalScope;
userId?: InputMaybe<Scalars["Int"]["input"]>;
@@ -2404,6 +2506,12 @@ export type RequestedMedalsGql = {
totalMakes10000?: Maybe<MedalGql>;
};
export type RunFeaturesGql = {
__typename?: "RunFeaturesGQL";
indexInRun: Scalars["Int"]["output"];
runId: Scalars["Int"]["output"];
};
export type RunFilterInput = {
andFilters?: InputMaybe<Array<RunFilterInput>>;
createdAt?: InputMaybe<DateRangeFilter>;
@@ -2421,10 +2529,17 @@ export type RunGql = {
id: Scalars["Int"]["output"];
runLength: Scalars["Int"]["output"];
shots: Array<ShotGql>;
user: UserGql;
userId: Scalars["Int"]["output"];
video: VideoGql;
videoId: Scalars["Int"]["output"];
};
export type RunLeaderboardGql = {
__typename?: "RunLeaderboardGQL";
entries: Array<RunGql>;
};
export type RunsOrderingComponent =
| { runLength: IntOrdering; videoCreation?: never; videoId?: never }
| { runLength?: never; videoCreation: DatetimeOrdering; videoId?: never }
@@ -2498,6 +2613,8 @@ export type ShotGql = {
id: Scalars["Int"]["output"];
pocketingIntentionFeatures?: Maybe<PocketingIntentionFeaturesGql>;
pocketingIntentionInfo?: Maybe<PocketingIntentionInfoGql>;
run?: Maybe<RunGql>;
runFeatures?: Maybe<RunFeaturesGql>;
serializedShotPaths?: Maybe<SerializedShotPathsGql>;
startFrame: Scalars["Int"]["output"];
startTime: Scalars["Float"]["output"];
@@ -2717,6 +2834,15 @@ export type UserRelationshipsResult = {
relationships: Array<UserRelationship>;
};
export type UserShotCountEntry = {
__typename?: "UserShotCountEntry";
proportionMade: Scalars["Float"]["output"];
total: Scalars["Int"]["output"];
user: UserGql;
value: Scalars["Int"]["output"];
videos: Scalars["Int"]["output"];
};
export type VideoFeedInputGql =
| {
allUsers: Scalars["Boolean"]["input"];
@@ -2780,6 +2906,7 @@ export type VideoMetadataInput = {
endStream?: Scalars["Boolean"]["input"];
endTime?: InputMaybe<Scalars["DateTime"]["input"]>;
framesPerSecond?: InputMaybe<Scalars["Float"]["input"]>;
/** @deprecated `game_type` is deprecated. Use `tags` instead. */
gameType?: InputMaybe<Scalars["String"]["input"]>;
lastIntendedSegmentBound?: InputMaybe<Scalars["Int"]["input"]>;
private?: InputMaybe<Scalars["Boolean"]["input"]>;
@@ -2787,6 +2914,8 @@ export type VideoMetadataInput = {
startTime?: InputMaybe<Scalars["DateTime"]["input"]>;
streamSegmentType?: InputMaybe<StreamSegmentTypeEnum>;
tableSize?: InputMaybe<Scalars["Float"]["input"]>;
/** A list of tags associated with the video. Replace `game_type` */
tags?: InputMaybe<Array<VideoTagInput>>;
videoName?: InputMaybe<Scalars["String"]["input"]>;
};
@@ -2919,6 +3048,7 @@ export type GetFeedQuery = {
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
} | null;
tags: Array<{
@@ -2972,6 +3102,7 @@ export type VideoCardFieldsFragment = {
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
} | null;
tags: Array<{
@@ -3028,6 +3159,7 @@ export type GetVideoFeedQuery = {
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
} | null;
tags: Array<{
@@ -3057,6 +3189,58 @@ export type GetVideoFeedQuery = {
};
};
export type GetMakesLeaderboardQueryVariables = Exact<{
interval?: InputMaybe<TimeInterval>;
when?: InputMaybe<Scalars["DateTime"]["input"]>;
}>;
export type GetMakesLeaderboardQuery = {
__typename?: "Query";
getMakesLeaderboard: {
__typename?: "CountLeaderboardGQL";
entries: Array<{
__typename?: "UserShotCountEntry";
value: number;
proportionMade: number;
total: number;
user: {
__typename?: "UserGQL";
id: number;
username: string;
profileImageUri?: string | null;
};
}>;
};
};
export type GetRunsLeaderboardQueryVariables = Exact<{
interval?: InputMaybe<TimeInterval>;
when?: InputMaybe<Scalars["DateTime"]["input"]>;
}>;
export type GetRunsLeaderboardQuery = {
__typename?: "Query";
getLongestRunsLeaderboard: {
__typename?: "RunLeaderboardGQL";
entries: Array<{
__typename?: "RunGQL";
id: number;
runLength: number;
video: {
__typename?: "VideoGQL";
name?: string | null;
createdAt?: any | null;
};
user: {
__typename?: "UserGQL";
id: number;
username: string;
profileImageUri?: string | null;
};
}>;
};
};
export type GetVideoMakePercentageIntervalsQueryVariables = Exact<{
videoId: Scalars["ID"]["input"];
intervalDuration: Scalars["Int"]["input"];
@@ -4296,6 +4480,30 @@ export type GetHeaderInfoByVideoIdQuery = {
};
};
export type GetBannerInfoByVideoIdQueryVariables = Exact<{
videoId: Scalars["Int"]["input"];
}>;
export type GetBannerInfoByVideoIdQuery = {
__typename?: "Query";
getVideo: {
__typename?: "VideoGQL";
id: number;
name?: string | null;
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
} | null;
owner?: { __typename?: "UserGQL"; id: number } | null;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
id: number;
status: ProcessingStatusEnum;
} | null;
};
};
export type FindPrerecordTableLayoutMutationVariables = Exact<{
b64Image: Scalars["String"]["input"];
videoId: Scalars["Int"]["input"];
@@ -4503,6 +4711,20 @@ export type GetUploadStreamsQuery = {
};
};
export type UploadStreamWithDetailsFragment = {
__typename?: "VideoGQL";
id: number;
name?: string | null;
startTime?: any | null;
stream?: {
__typename?: "UploadStreamGQL";
isCompleted: boolean;
lastIntendedSegmentBound?: number | null;
uploadCompletionCursor: number;
uploadsCompleted: number;
} | null;
};
export type GetUploadStreamsWithDetailsQueryVariables = Exact<{
limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>;
@@ -4556,6 +4778,7 @@ export const VideoCardFieldsFragmentDoc = gql`
screenshotUri
stream {
id
lastIntendedSegmentBound
isCompleted
}
tableSize
@@ -4760,6 +4983,19 @@ export const HomographyInfoFragmentDoc = gql`
}
}
`;
export const UploadStreamWithDetailsFragmentDoc = gql`
fragment UploadStreamWithDetails on VideoGQL {
id
name
startTime
stream {
isCompleted
lastIntendedSegmentBound
uploadCompletionCursor
uploadsCompleted
}
}
`;
export const GetAggregatedShotMetricsDocument = gql`
query GetAggregatedShotMetrics($aggregateInput: AggregateInputGQL!) {
getAggregatedShotMetrics(aggregateInput: $aggregateInput) {
@@ -5094,6 +5330,175 @@ export type GetVideoFeedQueryResult = Apollo.QueryResult<
GetVideoFeedQuery,
GetVideoFeedQueryVariables
>;
export const GetMakesLeaderboardDocument = gql`
query GetMakesLeaderboard($interval: TimeInterval, $when: DateTime) {
getMakesLeaderboard(interval: $interval, when: $when) {
entries {
user {
id
username
profileImageUri
}
value
proportionMade
total
}
}
}
`;
/**
* __useGetMakesLeaderboardQuery__
*
* To run a query within a React component, call `useGetMakesLeaderboardQuery` and pass it any options that fit your needs.
* When your component renders, `useGetMakesLeaderboardQuery` 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 } = useGetMakesLeaderboardQuery({
* variables: {
* interval: // value for 'interval'
* when: // value for 'when'
* },
* });
*/
export function useGetMakesLeaderboardQuery(
baseOptions?: Apollo.QueryHookOptions<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>(GetMakesLeaderboardDocument, options);
}
export function useGetMakesLeaderboardLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>(GetMakesLeaderboardDocument, options);
}
export function useGetMakesLeaderboardSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>(GetMakesLeaderboardDocument, options);
}
export type GetMakesLeaderboardQueryHookResult = ReturnType<
typeof useGetMakesLeaderboardQuery
>;
export type GetMakesLeaderboardLazyQueryHookResult = ReturnType<
typeof useGetMakesLeaderboardLazyQuery
>;
export type GetMakesLeaderboardSuspenseQueryHookResult = ReturnType<
typeof useGetMakesLeaderboardSuspenseQuery
>;
export type GetMakesLeaderboardQueryResult = Apollo.QueryResult<
GetMakesLeaderboardQuery,
GetMakesLeaderboardQueryVariables
>;
export const GetRunsLeaderboardDocument = gql`
query GetRunsLeaderboard($interval: TimeInterval, $when: DateTime) {
getLongestRunsLeaderboard(interval: $interval, when: $when) {
entries {
id
runLength
video {
name
createdAt
}
user {
id
username
profileImageUri
}
}
}
}
`;
/**
* __useGetRunsLeaderboardQuery__
*
* To run a query within a React component, call `useGetRunsLeaderboardQuery` and pass it any options that fit your needs.
* When your component renders, `useGetRunsLeaderboardQuery` 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 } = useGetRunsLeaderboardQuery({
* variables: {
* interval: // value for 'interval'
* when: // value for 'when'
* },
* });
*/
export function useGetRunsLeaderboardQuery(
baseOptions?: Apollo.QueryHookOptions<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>(GetRunsLeaderboardDocument, options);
}
export function useGetRunsLeaderboardLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>(GetRunsLeaderboardDocument, options);
}
export function useGetRunsLeaderboardSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>(GetRunsLeaderboardDocument, options);
}
export type GetRunsLeaderboardQueryHookResult = ReturnType<
typeof useGetRunsLeaderboardQuery
>;
export type GetRunsLeaderboardLazyQueryHookResult = ReturnType<
typeof useGetRunsLeaderboardLazyQuery
>;
export type GetRunsLeaderboardSuspenseQueryHookResult = ReturnType<
typeof useGetRunsLeaderboardSuspenseQuery
>;
export type GetRunsLeaderboardQueryResult = Apollo.QueryResult<
GetRunsLeaderboardQuery,
GetRunsLeaderboardQueryVariables
>;
export const GetVideoMakePercentageIntervalsDocument = gql`
query GetVideoMakePercentageIntervals(
$videoId: ID!
@@ -7864,6 +8269,91 @@ export type GetHeaderInfoByVideoIdQueryResult = Apollo.QueryResult<
GetHeaderInfoByVideoIdQuery,
GetHeaderInfoByVideoIdQueryVariables
>;
export const GetBannerInfoByVideoIdDocument = gql`
query GetBannerInfoByVideoId($videoId: Int!) {
getVideo(videoId: $videoId) {
id
name
stream {
id
lastIntendedSegmentBound
}
owner {
id
}
currentProcessing {
id
status
}
}
}
`;
/**
* __useGetBannerInfoByVideoIdQuery__
*
* To run a query within a React component, call `useGetBannerInfoByVideoIdQuery` and pass it any options that fit your needs.
* When your component renders, `useGetBannerInfoByVideoIdQuery` 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 } = useGetBannerInfoByVideoIdQuery({
* variables: {
* videoId: // value for 'videoId'
* },
* });
*/
export function useGetBannerInfoByVideoIdQuery(
baseOptions: Apollo.QueryHookOptions<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>(GetBannerInfoByVideoIdDocument, options);
}
export function useGetBannerInfoByVideoIdLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>(GetBannerInfoByVideoIdDocument, options);
}
export function useGetBannerInfoByVideoIdSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>(GetBannerInfoByVideoIdDocument, options);
}
export type GetBannerInfoByVideoIdQueryHookResult = ReturnType<
typeof useGetBannerInfoByVideoIdQuery
>;
export type GetBannerInfoByVideoIdLazyQueryHookResult = ReturnType<
typeof useGetBannerInfoByVideoIdLazyQuery
>;
export type GetBannerInfoByVideoIdSuspenseQueryHookResult = ReturnType<
typeof useGetBannerInfoByVideoIdSuspenseQuery
>;
export type GetBannerInfoByVideoIdQueryResult = Apollo.QueryResult<
GetBannerInfoByVideoIdQuery,
GetBannerInfoByVideoIdQueryVariables
>;
export const FindPrerecordTableLayoutDocument = gql`
mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {
@@ -8322,15 +8812,7 @@ export const GetUploadStreamsWithDetailsDocument = gql`
) {
getUserVideos(limit: $limit, after: $after, filters: $filters) {
videos {
id
name
startTime
stream {
isCompleted
lastIntendedSegmentBound
uploadCompletionCursor
uploadsCompleted
}
...UploadStreamWithDetails
}
pageInfo {
hasNextPage
@@ -8338,6 +8820,7 @@ export const GetUploadStreamsWithDetailsDocument = gql`
}
}
}
${UploadStreamWithDetailsFragmentDoc}
`;
/**

View File

@@ -36,6 +36,7 @@ fragment VideoCardFields on VideoGQL {
screenshotUri
stream {
id
lastIntendedSegmentBound
isCompleted
}
tableSize

View File

@@ -0,0 +1,32 @@
query GetMakesLeaderboard($interval: TimeInterval, $when: DateTime) {
getMakesLeaderboard(interval: $interval, when: $when) {
entries {
user {
id
username
profileImageUri
}
value
proportionMade
total
}
}
}
query GetRunsLeaderboard($interval: TimeInterval, $when: DateTime) {
getLongestRunsLeaderboard(interval: $interval, when: $when) {
entries {
id
runLength
video {
name
createdAt
}
user {
id
username
profileImageUri
}
}
}
}

View File

@@ -216,6 +216,23 @@ query GetHeaderInfoByVideoId($videoId: Int!) {
startTime
}
}
query GetBannerInfoByVideoId($videoId: Int!) {
getVideo(videoId: $videoId) {
id
name
stream {
id
lastIntendedSegmentBound
}
owner {
id
}
currentProcessing {
id
status
}
}
}
mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {

View File

@@ -101,6 +101,19 @@ query GetUploadStreams(
}
}
}
fragment UploadStreamWithDetails on VideoGQL {
id
name
startTime
stream {
isCompleted
lastIntendedSegmentBound
uploadCompletionCursor
uploadsCompleted
}
}
query GetUploadStreamsWithDetails(
$limit: Int! = 5
$after: String = null
@@ -108,15 +121,7 @@ query GetUploadStreamsWithDetails(
) {
getUserVideos(limit: $limit, after: $after, filters: $filters) {
videos {
id
name
startTime
stream {
isCompleted
lastIntendedSegmentBound
uploadCompletionCursor
uploadsCompleted
}
...UploadStreamWithDetails
}
pageInfo {
hasNextPage

View File

@@ -71,6 +71,16 @@ type Query {
filters: VideoFilterInput = null
feedInput: VideoFeedInputGQL = null
): VideoHistoryGQL!
getLongestRunsLeaderboard(
interval: TimeInterval = null
when: DateTime = null
limit: Int! = 100
requiredTags: [String!] = null
): RunLeaderboardGQL!
getMakesLeaderboard(
interval: TimeInterval = null
when: DateTime = null
): CountLeaderboardGQL!
}
type AggregateResultGQL {
@@ -173,6 +183,7 @@ input FilterInput @oneOf {
shotDirection: [ShotDirectionEnum!]
videoId: [Int!]
userId: [Int!]
runId: [Int!]
username: [String!]
fargoRating: FloatRangeFilter
make: [Boolean!]
@@ -338,6 +349,8 @@ type RunGQL {
videoId: Int!
userId: Int!
shots: [ShotGQL!]!
video: VideoGQL!
user: UserGQL!
}
type ShotGQL {
@@ -356,6 +369,8 @@ type ShotGQL {
annotations: [ShotAnnotationGQL!]!
falsePositiveScore: Float
video: VideoGQL
run: RunGQL
runFeatures: RunFeaturesGQL
}
type CueObjectFeaturesGQL {
@@ -595,6 +610,11 @@ type VideoProcessingStatusGQL {
updatedAt: DateTime
}
type RunFeaturesGQL {
runId: Int!
indexInRun: Int!
}
input RunFilterInput {
videoId: [Int!]
userId: [Int!]
@@ -719,6 +739,22 @@ input VideoFeedInputGQL @oneOf {
allUsers: Boolean
}
type RunLeaderboardGQL {
entries: [RunGQL!]!
}
type CountLeaderboardGQL {
entries: [UserShotCountEntry!]!
}
type UserShotCountEntry {
user: UserGQL!
value: Int!
total: Int!
proportionMade: Float!
videos: Int!
}
type Mutation {
createBucketSet(params: CreateBucketSetInput!): BucketSetGQL!
setLoggerLevel(path: String!, level: String!): Boolean!
@@ -859,6 +895,12 @@ input VideoMetadataInput {
startTime: DateTime = null
endTime: DateTime = null
gameType: String = null
@deprecated(reason: "`game_type` is deprecated. Use `tags` instead.")
"""
A list of tags associated with the video. Replace `game_type`
"""
tags: [VideoTagInput!] = null
tableSize: Float = null
lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null