Compare commits

...

15 Commits

Author SHA1 Message Date
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
6 changed files with 569 additions and 28 deletions

View File

@@ -124,7 +124,7 @@ export enum ClientUploadStatusEnum {
export type CountLeaderboardGql = { export type CountLeaderboardGql = {
__typename?: "CountLeaderboardGQL"; __typename?: "CountLeaderboardGQL";
entries: Array<IntUserLeaderboardEntry>; entries: Array<UserShotCountEntry>;
}; };
export type CreateBucketSetInput = { export type CreateBucketSetInput = {
@@ -248,6 +248,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -290,6 +291,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -332,6 +334,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -374,6 +377,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -416,6 +420,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -458,6 +463,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -500,6 +506,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -542,6 +549,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -584,6 +592,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -626,6 +635,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -668,6 +678,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -710,6 +721,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -752,6 +764,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -794,6 +807,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -836,6 +850,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -878,6 +893,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -920,6 +936,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -962,6 +979,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1004,6 +1022,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1046,6 +1065,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1088,6 +1108,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1130,6 +1151,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1172,6 +1194,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1214,6 +1237,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1256,6 +1280,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1298,6 +1323,7 @@ export type FilterInput =
missAngleInDegrees: FloatRangeFilter; missAngleInDegrees: FloatRangeFilter;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1340,6 +1366,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter: FilterInput; notFilter: FilterInput;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1382,6 +1409,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters: Array<FilterInput>; orFilters: Array<FilterInput>;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1424,6 +1452,50 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: 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; runLength: FloatRangeFilter;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1466,6 +1538,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection: Array<ShotDirectionEnum>; shotDirection: Array<ShotDirectionEnum>;
spinType?: never; spinType?: never;
@@ -1508,6 +1581,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType: Array<SpinTypeEnum>; spinType: Array<SpinTypeEnum>;
@@ -1550,6 +1624,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1592,6 +1667,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1634,6 +1710,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1676,6 +1753,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1718,6 +1796,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1760,6 +1839,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1802,6 +1882,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1844,6 +1925,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -1886,6 +1968,7 @@ export type FilterInput =
missAngleInDegrees?: never; missAngleInDegrees?: never;
notFilter?: never; notFilter?: never;
orFilters?: never; orFilters?: never;
runId?: never;
runLength?: never; runLength?: never;
shotDirection?: never; shotDirection?: never;
spinType?: never; spinType?: never;
@@ -2014,12 +2097,6 @@ export type IntPoint2D = {
y: Scalars["Int"]["output"]; y: Scalars["Int"]["output"];
}; };
export type IntUserLeaderboardEntry = {
__typename?: "IntUserLeaderboardEntry";
user: UserGql;
value: Scalars["Int"]["output"];
};
export type MakePercentageIntervalGql = { export type MakePercentageIntervalGql = {
__typename?: "MakePercentageIntervalGQL"; __typename?: "MakePercentageIntervalGQL";
elapsedTime: Scalars["Float"]["output"]; elapsedTime: Scalars["Float"]["output"];
@@ -2243,6 +2320,7 @@ export type Query = {
getDeployedConfig: DeployedConfigGql; getDeployedConfig: DeployedConfigGql;
getFeedVideos: VideoHistoryGql; getFeedVideos: VideoHistoryGql;
getLoggedInUser?: Maybe<UserGql>; getLoggedInUser?: Maybe<UserGql>;
getLongestRunsLeaderboard: RunLeaderboardGql;
getMakesLeaderboard: CountLeaderboardGql; getMakesLeaderboard: CountLeaderboardGql;
getMedals: RequestedMedalsGql; getMedals: RequestedMedalsGql;
getOrderedShots: GetShotsResult; getOrderedShots: GetShotsResult;
@@ -2284,6 +2362,13 @@ export type QueryGetFeedVideosArgs = {
limit?: Scalars["Int"]["input"]; 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 = { export type QueryGetMakesLeaderboardArgs = {
interval?: InputMaybe<TimeInterval>; interval?: InputMaybe<TimeInterval>;
when?: InputMaybe<Scalars["DateTime"]["input"]>; when?: InputMaybe<Scalars["DateTime"]["input"]>;
@@ -2421,6 +2506,12 @@ export type RequestedMedalsGql = {
totalMakes10000?: Maybe<MedalGql>; totalMakes10000?: Maybe<MedalGql>;
}; };
export type RunFeaturesGql = {
__typename?: "RunFeaturesGQL";
indexInRun: Scalars["Int"]["output"];
runId: Scalars["Int"]["output"];
};
export type RunFilterInput = { export type RunFilterInput = {
andFilters?: InputMaybe<Array<RunFilterInput>>; andFilters?: InputMaybe<Array<RunFilterInput>>;
createdAt?: InputMaybe<DateRangeFilter>; createdAt?: InputMaybe<DateRangeFilter>;
@@ -2438,10 +2529,17 @@ export type RunGql = {
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
runLength: Scalars["Int"]["output"]; runLength: Scalars["Int"]["output"];
shots: Array<ShotGql>; shots: Array<ShotGql>;
user: UserGql;
userId: Scalars["Int"]["output"]; userId: Scalars["Int"]["output"];
video: VideoGql;
videoId: Scalars["Int"]["output"]; videoId: Scalars["Int"]["output"];
}; };
export type RunLeaderboardGql = {
__typename?: "RunLeaderboardGQL";
entries: Array<RunGql>;
};
export type RunsOrderingComponent = export type RunsOrderingComponent =
| { runLength: IntOrdering; videoCreation?: never; videoId?: never } | { runLength: IntOrdering; videoCreation?: never; videoId?: never }
| { runLength?: never; videoCreation: DatetimeOrdering; videoId?: never } | { runLength?: never; videoCreation: DatetimeOrdering; videoId?: never }
@@ -2515,6 +2613,8 @@ export type ShotGql = {
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
pocketingIntentionFeatures?: Maybe<PocketingIntentionFeaturesGql>; pocketingIntentionFeatures?: Maybe<PocketingIntentionFeaturesGql>;
pocketingIntentionInfo?: Maybe<PocketingIntentionInfoGql>; pocketingIntentionInfo?: Maybe<PocketingIntentionInfoGql>;
run?: Maybe<RunGql>;
runFeatures?: Maybe<RunFeaturesGql>;
serializedShotPaths?: Maybe<SerializedShotPathsGql>; serializedShotPaths?: Maybe<SerializedShotPathsGql>;
startFrame: Scalars["Int"]["output"]; startFrame: Scalars["Int"]["output"];
startTime: Scalars["Float"]["output"]; startTime: Scalars["Float"]["output"];
@@ -2734,6 +2834,15 @@ export type UserRelationshipsResult = {
relationships: Array<UserRelationship>; 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 = export type VideoFeedInputGql =
| { | {
allUsers: Scalars["Boolean"]["input"]; allUsers: Scalars["Boolean"]["input"];
@@ -2936,6 +3045,7 @@ export type GetFeedQuery = {
stream?: { stream?: {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
id: string; id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean; isCompleted: boolean;
} | null; } | null;
tags: Array<{ tags: Array<{
@@ -2989,6 +3099,7 @@ export type VideoCardFieldsFragment = {
stream?: { stream?: {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
id: string; id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean; isCompleted: boolean;
} | null; } | null;
tags: Array<{ tags: Array<{
@@ -3045,6 +3156,7 @@ export type GetVideoFeedQuery = {
stream?: { stream?: {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
id: string; id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean; isCompleted: boolean;
} | null; } | null;
tags: Array<{ tags: Array<{
@@ -3074,6 +3186,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<{ export type GetVideoMakePercentageIntervalsQueryVariables = Exact<{
videoId: Scalars["ID"]["input"]; videoId: Scalars["ID"]["input"];
intervalDuration: Scalars["Int"]["input"]; intervalDuration: Scalars["Int"]["input"];
@@ -4313,6 +4477,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<{ export type FindPrerecordTableLayoutMutationVariables = Exact<{
b64Image: Scalars["String"]["input"]; b64Image: Scalars["String"]["input"];
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
@@ -4520,6 +4708,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<{ export type GetUploadStreamsWithDetailsQueryVariables = Exact<{
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>; after?: InputMaybe<Scalars["String"]["input"]>;
@@ -4573,6 +4775,7 @@ export const VideoCardFieldsFragmentDoc = gql`
screenshotUri screenshotUri
stream { stream {
id id
lastIntendedSegmentBound
isCompleted isCompleted
} }
tableSize tableSize
@@ -4777,6 +4980,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` export const GetAggregatedShotMetricsDocument = gql`
query GetAggregatedShotMetrics($aggregateInput: AggregateInputGQL!) { query GetAggregatedShotMetrics($aggregateInput: AggregateInputGQL!) {
getAggregatedShotMetrics(aggregateInput: $aggregateInput) { getAggregatedShotMetrics(aggregateInput: $aggregateInput) {
@@ -5111,6 +5327,175 @@ export type GetVideoFeedQueryResult = Apollo.QueryResult<
GetVideoFeedQuery, GetVideoFeedQuery,
GetVideoFeedQueryVariables 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` export const GetVideoMakePercentageIntervalsDocument = gql`
query GetVideoMakePercentageIntervals( query GetVideoMakePercentageIntervals(
$videoId: ID! $videoId: ID!
@@ -7881,6 +8266,91 @@ export type GetHeaderInfoByVideoIdQueryResult = Apollo.QueryResult<
GetHeaderInfoByVideoIdQuery, GetHeaderInfoByVideoIdQuery,
GetHeaderInfoByVideoIdQueryVariables 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` export const FindPrerecordTableLayoutDocument = gql`
mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) { mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) { findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {
@@ -8339,15 +8809,7 @@ export const GetUploadStreamsWithDetailsDocument = gql`
) { ) {
getUserVideos(limit: $limit, after: $after, filters: $filters) { getUserVideos(limit: $limit, after: $after, filters: $filters) {
videos { videos {
id ...UploadStreamWithDetails
name
startTime
stream {
isCompleted
lastIntendedSegmentBound
uploadCompletionCursor
uploadsCompleted
}
} }
pageInfo { pageInfo {
hasNextPage hasNextPage
@@ -8355,6 +8817,7 @@ export const GetUploadStreamsWithDetailsDocument = gql`
} }
} }
} }
${UploadStreamWithDetailsFragmentDoc}
`; `;
/** /**

View File

@@ -36,6 +36,7 @@ fragment VideoCardFields on VideoGQL {
screenshotUri screenshotUri
stream { stream {
id id
lastIntendedSegmentBound
isCompleted isCompleted
} }
tableSize 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 startTime
} }
} }
query GetBannerInfoByVideoId($videoId: Int!) {
getVideo(videoId: $videoId) {
id
name
stream {
id
lastIntendedSegmentBound
}
owner {
id
}
currentProcessing {
id
status
}
}
}
mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) { mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) { findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {

View File

@@ -101,13 +101,8 @@ query GetUploadStreams(
} }
} }
} }
query GetUploadStreamsWithDetails(
$limit: Int! = 5 fragment UploadStreamWithDetails on VideoGQL {
$after: String = null
$filters: VideoFilterInput = null
) {
getUserVideos(limit: $limit, after: $after, filters: $filters) {
videos {
id id
name name
startTime startTime
@@ -117,6 +112,16 @@ query GetUploadStreamsWithDetails(
uploadCompletionCursor uploadCompletionCursor
uploadsCompleted uploadsCompleted
} }
}
query GetUploadStreamsWithDetails(
$limit: Int! = 5
$after: String = null
$filters: VideoFilterInput = null
) {
getUserVideos(limit: $limit, after: $after, filters: $filters) {
videos {
...UploadStreamWithDetails
} }
pageInfo { pageInfo {
hasNextPage hasNextPage

View File

@@ -71,6 +71,12 @@ type Query {
filters: VideoFilterInput = null filters: VideoFilterInput = null
feedInput: VideoFeedInputGQL = null feedInput: VideoFeedInputGQL = null
): VideoHistoryGQL! ): VideoHistoryGQL!
getLongestRunsLeaderboard(
interval: TimeInterval = null
when: DateTime = null
limit: Int! = 100
requiredTags: [String!] = null
): RunLeaderboardGQL!
getMakesLeaderboard( getMakesLeaderboard(
interval: TimeInterval = null interval: TimeInterval = null
when: DateTime = null when: DateTime = null
@@ -177,6 +183,7 @@ input FilterInput @oneOf {
shotDirection: [ShotDirectionEnum!] shotDirection: [ShotDirectionEnum!]
videoId: [Int!] videoId: [Int!]
userId: [Int!] userId: [Int!]
runId: [Int!]
username: [String!] username: [String!]
fargoRating: FloatRangeFilter fargoRating: FloatRangeFilter
make: [Boolean!] make: [Boolean!]
@@ -342,6 +349,8 @@ type RunGQL {
videoId: Int! videoId: Int!
userId: Int! userId: Int!
shots: [ShotGQL!]! shots: [ShotGQL!]!
video: VideoGQL!
user: UserGQL!
} }
type ShotGQL { type ShotGQL {
@@ -360,6 +369,8 @@ type ShotGQL {
annotations: [ShotAnnotationGQL!]! annotations: [ShotAnnotationGQL!]!
falsePositiveScore: Float falsePositiveScore: Float
video: VideoGQL video: VideoGQL
run: RunGQL
runFeatures: RunFeaturesGQL
} }
type CueObjectFeaturesGQL { type CueObjectFeaturesGQL {
@@ -599,6 +610,11 @@ type VideoProcessingStatusGQL {
updatedAt: DateTime updatedAt: DateTime
} }
type RunFeaturesGQL {
runId: Int!
indexInRun: Int!
}
input RunFilterInput { input RunFilterInput {
videoId: [Int!] videoId: [Int!]
userId: [Int!] userId: [Int!]
@@ -723,13 +739,20 @@ input VideoFeedInputGQL @oneOf {
allUsers: Boolean allUsers: Boolean
} }
type CountLeaderboardGQL { type RunLeaderboardGQL {
entries: [IntUserLeaderboardEntry!]! entries: [RunGQL!]!
} }
type IntUserLeaderboardEntry { type CountLeaderboardGQL {
entries: [UserShotCountEntry!]!
}
type UserShotCountEntry {
user: UserGQL! user: UserGQL!
value: Int! value: Int!
total: Int!
proportionMade: Float!
videos: Int!
} }
type Mutation { type Mutation {