Compare commits

..

15 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
6 changed files with 464 additions and 29 deletions

View File

@@ -124,7 +124,7 @@ export enum ClientUploadStatusEnum {
export type CountLeaderboardGql = {
__typename?: "CountLeaderboardGQL";
entries: Array<IntUserLeaderboardEntry>;
entries: Array<UserShotCountEntry>;
};
export type CreateBucketSetInput = {
@@ -248,6 +248,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -290,6 +291,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -332,6 +334,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -374,6 +377,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -416,6 +420,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -458,6 +463,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -500,6 +506,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -542,6 +549,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -584,6 +592,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -626,6 +635,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -668,6 +678,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -710,6 +721,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -752,6 +764,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -794,6 +807,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -836,6 +850,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -878,6 +893,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -920,6 +936,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -962,6 +979,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1004,6 +1022,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1046,6 +1065,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1088,6 +1108,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1130,6 +1151,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1172,6 +1194,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1214,6 +1237,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1256,6 +1280,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1298,6 +1323,7 @@ export type FilterInput =
missAngleInDegrees: FloatRangeFilter;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1340,6 +1366,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter: FilterInput;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1382,6 +1409,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters: Array<FilterInput>;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1424,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;
@@ -1466,6 +1538,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection: Array<ShotDirectionEnum>;
spinType?: never;
@@ -1508,6 +1581,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType: Array<SpinTypeEnum>;
@@ -1550,6 +1624,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1592,6 +1667,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1634,6 +1710,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1676,6 +1753,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1718,6 +1796,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1760,6 +1839,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1802,6 +1882,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1844,6 +1925,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -1886,6 +1968,7 @@ export type FilterInput =
missAngleInDegrees?: never;
notFilter?: never;
orFilters?: never;
runId?: never;
runLength?: never;
shotDirection?: never;
spinType?: never;
@@ -2014,12 +2097,6 @@ export type IntPoint2D = {
y: Scalars["Int"]["output"];
};
export type IntUserLeaderboardEntry = {
__typename?: "IntUserLeaderboardEntry";
user: UserGql;
value: Scalars["Int"]["output"];
};
export type MakePercentageIntervalGql = {
__typename?: "MakePercentageIntervalGQL";
elapsedTime: Scalars["Float"]["output"];
@@ -2243,6 +2320,7 @@ export type Query = {
getDeployedConfig: DeployedConfigGql;
getFeedVideos: VideoHistoryGql;
getLoggedInUser?: Maybe<UserGql>;
getLongestRunsLeaderboard: RunLeaderboardGql;
getMakesLeaderboard: CountLeaderboardGql;
getMedals: RequestedMedalsGql;
getOrderedShots: GetShotsResult;
@@ -2284,6 +2362,13 @@ 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"]>;
@@ -2421,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>;
@@ -2438,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 }
@@ -2515,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"];
@@ -2734,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"];
@@ -2797,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"]>;
@@ -2804,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"]>;
};
@@ -2936,6 +3048,7 @@ export type GetFeedQuery = {
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
} | null;
tags: Array<{
@@ -2989,6 +3102,7 @@ export type VideoCardFieldsFragment = {
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
} | null;
tags: Array<{
@@ -3045,6 +3159,7 @@ export type GetVideoFeedQuery = {
stream?: {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
} | null;
tags: Array<{
@@ -3084,8 +3199,38 @@ export type GetMakesLeaderboardQuery = {
getMakesLeaderboard: {
__typename?: "CountLeaderboardGQL";
entries: Array<{
__typename?: "IntUserLeaderboardEntry";
__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;
@@ -4335,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"];
@@ -4542,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"]>;
@@ -4595,6 +4778,7 @@ export const VideoCardFieldsFragmentDoc = gql`
screenshotUri
stream {
id
lastIntendedSegmentBound
isCompleted
}
tableSize
@@ -4799,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) {
@@ -5143,6 +5340,8 @@ export const GetMakesLeaderboardDocument = gql`
profileImageUri
}
value
proportionMade
total
}
}
}
@@ -5214,6 +5413,92 @@ 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!
@@ -7984,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) {
@@ -8442,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
@@ -8458,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

@@ -7,6 +7,26 @@ query GetMakesLeaderboard($interval: TimeInterval, $when: DateTime) {
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,12 @@ 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
@@ -177,6 +183,7 @@ input FilterInput @oneOf {
shotDirection: [ShotDirectionEnum!]
videoId: [Int!]
userId: [Int!]
runId: [Int!]
username: [String!]
fargoRating: FloatRangeFilter
make: [Boolean!]
@@ -342,6 +349,8 @@ type RunGQL {
videoId: Int!
userId: Int!
shots: [ShotGQL!]!
video: VideoGQL!
user: UserGQL!
}
type ShotGQL {
@@ -360,6 +369,8 @@ type ShotGQL {
annotations: [ShotAnnotationGQL!]!
falsePositiveScore: Float
video: VideoGQL
run: RunGQL
runFeatures: RunFeaturesGQL
}
type CueObjectFeaturesGQL {
@@ -599,6 +610,11 @@ type VideoProcessingStatusGQL {
updatedAt: DateTime
}
type RunFeaturesGQL {
runId: Int!
indexInRun: Int!
}
input RunFilterInput {
videoId: [Int!]
userId: [Int!]
@@ -723,13 +739,20 @@ input VideoFeedInputGQL @oneOf {
allUsers: Boolean
}
type CountLeaderboardGQL {
entries: [IntUserLeaderboardEntry!]!
type RunLeaderboardGQL {
entries: [RunGQL!]!
}
type IntUserLeaderboardEntry {
type CountLeaderboardGQL {
entries: [UserShotCountEntry!]!
}
type UserShotCountEntry {
user: UserGQL!
value: Int!
total: Int!
proportionMade: Float!
videos: Int!
}
type Mutation {
@@ -872,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